重要! 一発じゃ覚えられないので何度も見よう!(ラムダ式) - TejimaTuyoshi/returnread GitHub Wiki
あらかじめ言う
「これが分からないとダメ」
大前提 デリゲート = 「メソッド」の型 型 = 「データ」の型<int,bool,string>
区別方法 ・データ型 = [クラス]or[構造体]
・デリゲート = 戻り値の型・引数の数・引数の型{戻り値の数は「一つ」なので求める必要は無し}※前回を見ること!
ただし、デリゲートは「Action<>」で書けるのであまり使わない。が、読めるようにしておくこと。
「Action a+= Console.Writeline();」のように使用が可能。
ゲーム = 戻り値がvoidなことが多い。(命令した後は任せているため(自分で操作していることはほぼ不可能))
Func<> =戻り値アリ。一番右側にあるものが戻り値。その左にあるのが引数。<引数,戻り値>
例<string,int> = int.Parse(もともとstringだった物をintにしている。)
のようになる。
これを「戻り値があるもの」と覚えないと詰む。
「引数ではない」
これ大事ね。うん。
そしてもう一つ、ラムダ式で重要な部分である[Linq]を使用する。
⓵「Where」を使って条件付けをしたうえで、「あらかじめ区別しているクラス(別のところにある)を使用」して、抽出する。
ただし、「区別できるクラス」が別のところにあることが多いので、見づらい。
これは「やらせたいこと」を【メソッド】として使う必要がある。
⓶「デリゲートを使用する」状態で「匿名メソッド(名前のないメソッド)」を使用する。
大前提として、「var filteredList2 = intArray.Where(delegate(int i)」として匿名にするよ~をする。
条件を入れることで、「使い捨て」として他の場所でも使われないし、遠回しに「使うな」とも表現可能。
(直したいときに使われるとマズいから...)
⓷「デリゲートを使用せず」【ラムダ式(goes to ともいう)】で「匿名メソッド」を使用する。
この場合は、「var filteredList3 = intArray.Where((int i) => { return i > 5; }).ToList();」と
省略&デリゲート無&「矢印を使ってかつ、リターンをする」
⓸さらに省略
intArray.Where(i => i > 5).ToList().ForEach(i => Console.WriteLine(i));//引数が一個の場合、()を使用,内容が一個={}省略、かつ条件が一つなので一つに
Console.WriteLine("Hit Enter...");
Console.ReadLine();
もっとやると、一行に...
intArray Where(i => i > 5).ToList().ForEach(Console.WriteLine)
に、もうワケが分からないよ...(省略部分は省略する)
・同じこと書いてたら省略
・{}が一行なら省略(引数のならね...)(一行のみ)
・条件が単純(一つだったり...)なら省略(一行のみ)
・戻り値
引数の型
など
大丈夫か?ついてこれてるか?...大丈夫。私にもわからん。
なので毎回毎回見返そうね。