Meiryo’s blog

やってみて詰まったことを備忘録として残すブログ

【C#】ラムダ式に慣れる2~ラムダ式~

1を書いてから約2ヶ月空いてしまいました・・・

前回の記事はこちら
【C#】ラムダ式に慣れる1~デリゲートと匿名メソッド~ - Meiryo’s blog

ラムダ式のこととListクラスで用意されている
ラムダ式を指定できるメソッドのことについて書いていきます。

ラムダ式

前回匿名メソッドを使った際に、このようなプログラムを書きました。
足し算をするメソッドを匿名メソッドで作って
それをCalculationメソッドに渡しています。


このコードをラムダ式を使って書き換えます。
書き換えたのがこちら。

変わった箇所は赤四角のところです。
delegateの文字がなくなり、匿名メソッドが更に簡略化されました。

ラムダ式の書き方

ラムダ式は更に省略ができます。

型を暗黙的に推論してくれるそうなので
型を省略ができて
更に引数が1つの場合はカッコが省略できます。
そして引数がない場合は引数を省略できます。
これを覚えておけばもうラムダ式を見てもビビらないでしょう。

Listクラスのラムダ式を指定できるメソッド

Foreach

ラムダ式を指定して使うForeachです。

一つずつ取り出してその数を足しているのを確認できました。

ちなみにですが複数行書きたいときは{}で囲むと書けます。

ConvertAll

ドキュメントによると

現在の List の要素を別の型に変換し、変換された要素が格納されたリストを返します。

とのこと。
int型のListの要素をstring型に変換して返す、をやってみました。

int型がstring型になって戻ったのが確認できました。

Find/FindAll

Listを探索し、条件があったものを返す。
Findは最初に条件があったもののみ、FindAllは条件があったもの全部を返します。
どちらも使ってみました。

Findでは1つのみ、FindAllでは条件に合うものすべて
が取得できているのを確認できました。
これとても便利ですね。

終わりに

不気味でわけの分からなかったラムダ式ですが
デリゲート→匿名メソッド→ラムダ式の順に
理解していくことによって使えるようになってきました。
まだまだ慣れが必要なので競プロの練習問題でラムダ式を使いつつ
慣れて行こうと思ってます。