C#には、ラムダ式と呼ばれる同様の概念があります。
public static Func<int> Foo()
{
int a = 1,
b = 2;
return () => a + b;
}
これは、匿名で宣言される一般的なファーストクラス関数です(ファーストクラス関数とは、関数自体が返されることを意味し、その結果ではありません)。
この場合、クロージャと呼ばれるものも示します。返されたメソッドは「ローカル」変数aとbを囲み、Fooがスコープ外になったときにそれらを保持できるようにします。多くの言語では、匿名メソッドはクロージャーを実装します。
匿名のメソッドも非常に優れています。このベンチマークメソッドのように、動作の挿入を実行できます。
public static TimeSpan BenchmarkMe(Action timeThis)
{
Stopwatch sw = Stopwatch.StartNew()
timeThis();
sw.Stop;
return sw.Elapsed;
}
TimeSpanを返す無名関数をこのメソッドに渡すことができます。このメソッドは、TimeSpanに対してシングルパスのベンチマークを実行します。気の利いた、え?