Linq

C# 匿名メソッド、ラムダ式(=>)について解説します。

まえがき

こんばんは、かっぱちゃんです。

今回は下記のテーマについて解説します。

今回のテーマ

匿名メソッドとラムダ式について

今回の記事は下記の記事の続きなので、まだ見ていない方は良ければみてください。

CHECK

C# ラムダ式(=>)について解説します。 まずはデリゲートについて覚えましょう。 

今回のテーマContents1 今回のテーマ2 デリゲートを使わない例3 デリゲートを使ってみよう4 まとめ こんばんは、かっぱちゃんです。 今回は、下記のテーマについて書いていきます。 今回のテーマ ...

続きを見る

早速、匿名メソッドについて解説します。
KappaChan

他のLinqの記事についてはこちら

デリケートを使用した書き方

まず、前回の記事のおさらいとしてデリケートを使用した書き方を記述します。

デリケートを使用して、奇数、偶数を判別するソースコード

 result
4
6

デリケートのJudgeに偶数の関数を代入した後、奇数の関数を代入しているソースコードです。

このソースコードのデリケートに対して、匿名メソッドを使用した書き方にしてみます。

匿名メソッドを使用した書き方

匿名メソッドとは、名前の通り名前が存在しないメソッドです。

匿名メソッドを使用することにより、上記のIsEvenやIsOddなどの関数名を指定することなく記述することができます。

早速、ソースコードを見てみましょう。

匿名メソッドを使用した書き方

 result
4
6

変更を加えたのは11行目と12行目です。中々テンションの上がる書き方になってきましたね。

二つのソースコードを見比べて頂ければ、処理自体にメソッド名っていらなくない?ってのが実感して頂けたと思います。

でも、まだdelegateという文字列を書かなければならないので、冗長に感じてしまいます。

そこで、ラムダ式を使用すればさらに短く書くことができるのです。

ラムダ式を使用した書き方

続けて、上記のソースコードをラムダ式を使用した方法で書いていきます。

ラムダ式を使用した書き方

 result
4
6

11行目、12行目をみてください。delegateがなくなり、遂に=>が現れました。=>はdelegateを表していたんですね。

右辺の部分をラムダ式といいます。一種のメソッドとして考えて頂ければいいでしょう。

ラムダ式はさらに簡潔に書くことができるので、これからは11行目と12行目に注目し、さらに簡潔に書けるようにしていきます。

KappaChan
さらに簡潔に書けるようにしていくよ!

ラムダ式の省略

ラムダ式をさらに省略していきましょう。上記の11行目と12行目のソースコードは下記です。

step
1
ラムダ式は{}とreturnを省略することができます。

step
2
ラムダ式では引数の型を省略することが可能です。

step
3
ラムダ式では引数が1つの場合は、()を外すことが可能です。

かなり簡潔にすることができましたね。Linqでも見慣れた形になりました。

最終的なソースコードは下記となります。

ラムダ式の最終的な書き方

 result
4
6

色々なラムダ式を渡してみよう

奇数と偶数以外にも色々なラムダ式を渡してみましょう。

例では下記を判別するラムダ式を渡してみます。

  • 3以上の値
  • 3以下4以上の値
  • 1が含まれている数字

色々なラムダ式

 result
4
6
4
5
2

その他にも色々と試してみてくださいね。

KappaChan
色々なラムダ式を作ってみよう!

まとめ

今回はデリゲートの書き方からラムダ式の書き方に変換していく記事でした。

ラムダ式って何?ということが少しでも解消されたと思います。全て覚える必要もないので、流れだけでも覚えてくれるといいでしょう。

次の記事はクラスCalcのdelegateの宣言を解消したい方向けの記事を書きたいと思います。

今回も最後まで見て頂き有難うございました。

他のLinqの記事についてはこちら

-Linq

X