ホームに戻る
出典 :
無名関数 - Wikipedia 無名関数 - Qiita
関連 :
[C#]ラムダ式による省略記法 [C#]デリゲートとイベント [.NET]Dictionary(連想配列) [.NET]LINQ (Language Integrated Query)
目次 :

無名関数(Anonymous Function / Nameless Function)とは

名前を付けずに定義された関数のこと。匿名関数とも呼ばれる。
一度しか用いない関数であれば、名前を付けないことで名前の衝突を回避でき、また 無名関数(式)を関数の引数として直接渡すことができる (むしろこれが主用途である)。
比較的新しい概念で、C++(C++11以降)、C#、Java、JavaScript、Python、Rubyなどのモダン言語で用いることができる。後述の ラムダ式を用いた表現が一般的
無名関数を用いることで、高階関数(関数を引数または戻り値とする関数)の記述がより容易となる。

無名関数の記述例

引数リストと式を対にした「ラムダ式(Lambda Expression)」が現在では主流となっている。
C# 2.0では「匿名メソッド式」がサポートされていたが、C# 3.0でより簡便かつ多用途なラムダ式が導入された。

C++(C++11以降) : ラムダ式

通常の関数定義における関数名を "[]" に置き換える。
画像

C#(C# 2.0) : 匿名メソッド式

delegate キーワードが必要。C++のラムダ式と似た記述となる。
画像

C#(C# 3.0) : ラムダ式

引数と式を=>で結ぶ。
画像
変数の型が推論できる場合はさらに簡略化できる。
画像
ラムダ式が単文の場合は、{} 、return 、; が省略できる。
画像
さらに引数が一つだけの場合は引数リストの括弧 () も省略できる。

実際の用途

無名関数(メソッド)自体を引数として、他の関数に渡すのが主な用途となる。
C#においてはLINQが代表的。