デリゲート
デリゲートは、特定の引数と戻り値を持つメソッドへの参照を表す型です。メソッドそのものを変数に代入したり、別のメソッドへ渡したりできます。
Func<int, int, int> operation = Add;
Console.WriteLine(operation(4, 7));
static int Add(int a, int b)
{
return a + b;
}
Funcは戻り値がある処理、Actionは戻り値がない処理を表す標準デリゲートです。
ラムダ式
ラムダ式を使うと、短い処理をその場で定義できます。
Func<int, bool> isEven = value => value % 2 == 0;
Console.WriteLine(isEven(12));
引数が複数ある場合は括弧で囲み、処理が複数文になる場合はブロックを使います。
使いどころ
LINQのWhereやSelect、イベント、コールバックなどで利用されます。処理を値として渡す必要があるかを考え、無理にラムダ式へまとめて可読性を落とさないようにしましょう。