デリゲート(delegate: 代表、委譲、委託)とは、メソッドを参照するための型です。 C言語やC++言語の勉強をしたことがある人には、 「デリゲートとは関数ポインターや関数オブジェクトをオブジェクト指向に適するように拡張したもの」 と言った方が分かりやすいかもしれません。
宣言
delegate void StringProcessor(string input);
C#3のデリゲートの書き方がシンプルです
Func<int, int, string> func = (x,y) => (x*y).ToString();
Console.WriteLine(func(5,20));
Funcはジェネリックデリゲート型です。
定義済みデリゲートには大きく2種類あります。
”Action”と”Func”です。
”Action”が戻り値なしのデリゲートで
”Func”が戻り値を持つデリゲートとなります。
引数はそれぞれ4つまで対応しているみたいです。
public void SampleMethod()
{
//引数void、戻り値void
Action act1 = () =>
{
Console.WriteLine("");
};
//引数string、戻り値void
Action<string> act2 = (string value) =>
{
Console.WriteLine(value);
};
//引数int,int、戻り値string
Func<int, int, string> funcAdd = (x, y) =>
{
return (x + y).ToString();
};
//呼び出し
act1();
act2("");
string answer = funcAdd(1, 2);
}
メソッドの中にメソッドを定義することができるじゃん!!
Lua言語みたいな感じですね!