おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

【C#】匿名メソッドとは?

f:id:bookreadkun:20190627174740p:plain

おはようございます。おーみんです。

 

現在C#をお勉強中です。

今回は匿名メソッドについて、学んだ内容をまとめていこうと思います。

 

匿名メソッドとは?

匿名メソッドとは、名前の通り名前が不明なメソッドのことです(笑)

 

先日デリゲートについて書いた記事に載せたサンプルプログラムを見てみましょう。

f:id:bookreadkun:20190627165102p:plain

 

ここの14~15行目にてデリゲートを用いてkansuメソッドを実行しているのですが.....「Console.WriteLine("Hello World!");」をThisisDelegateに実行してもらうためだけにkansuメソッドを定義するのってあまりにも冗長ですよね(;^_^A

 

そこで、C#2.0からは以下のように簡略化して書けるようになりました。

 

---------------

デリゲート  デリゲート名 = delegate(パラメーター) { 処理内容 };

※今回だったら「処理内容」のところに「Console.WriteLine("Hello World!");」と書く。

---------------

 

処理内容を行っているメソッドの名前がないですよね。

上記に載せているサンプルコードではkansuメソッドを用いてConsole~(以下略)を出力していますが、今回はdelegate(){Console~(以下略)}で統一されています。

 

この仕組みを匿名メソッドといいます。

 

具体的なサンプルプログラムを以下に載せます。

サンプルプログラム

f:id:bookreadkun:20190627181150p:plain

 

先程載せたサンプルプログラムへ新たに匿名メソッドの内容を追記しています(17~18行目)。11~12行目、14~15行目の処理ではkansuメソッドを参照していますが、匿名メソッドでは参照していません。

 

少しコンパクトにまとまった感がありますね!(^^)!

 

もちろん出力結果も正しく表示されます。

f:id:bookreadkun:20190627181357p:plain

 

最後に

以上で匿名メソッドに関する説明は終了です。

とはいえ、とはいえとはいえ、これもまたC#3.0から出てきたラムダ式というのを使えばもっと簡潔に書けてしまうのです(笑)

 

このラムダ式というのがなかなか難しい・・・

引き続き勉強して記事にまとめていこうと思います。

 

今回の記事も参考になっていただければ幸いです。