転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

【技術書メモ】C#ラムダ式まとめ

何度も勉強しているが、すぐに忘れて使えなくなるのがラムダ式。ということで、何度も何度も勉強し直しています。
正直に言うと、「ラムダ式とは何ですか?」と聞かれてもうまく説明できる自身がない。自分の中の理解としては、ラムダ式はPredicateデリゲート型に変換できるため、Predicateデリゲート型を引数にもつ匿名メソッドに使用できる。
よって、引数に様々な条件を簡単な記述で渡せれるというのが、自分の中でのラムダ式というイメージ。

// Predicateデリゲート型変数matchに、ラムダ式を代入
Predicate<string> match =
    (string s) => {
        if (s[0] == 'A')
            return true;
        else
            return false;
    };

// 上で定義したPredicateデリゲート型変数matchを、Exixtsメソッドに代入
Console.WriteLine(list.Exists(match));

これが、Predicateデリゲート型を引数に持つメソッドに、ラムダ式を使った変数を渡しているコードだ。
けど、これじゃあ書き方が助長なので、簡素化したものがこちら。

Console.WriteLine(list.Exists(s => s[0] == 'A'));

さっきのコードと同じ結果が得られるから、こっちの書き方の方が簡単。けど、慣れないとこのコードが読めない。
自分は、=>の右側に条件を記載するものとして覚えた。=>の左側は、ListのT型がくるものと認識している。だから、Listであればint型の値がくるし、Listであればstring型の値がくる。
こんなざっくり理解でも、一応ラムダ式使えているのでOKとする。ラムダ式、完璧に理解した。