宣言
関数の入れ物。定義した型の関数を格納できる。
delegateキーワードを付けて引数、返り値の型を宣言する。
delegate void del_func(int val);
new
以前はnewでインスタンス化していたが、v2.0からインスタンス化は不要
del_func dft = new del_func(func1);
del_func dft = func1;
一つのdelegateに複数登録すると、全て呼び出される。
del_func dfm = func1;
dfm += func2;
dfm += func3;
dfm(6);
Action, Func
delegateをいちいち宣言せずに使える。
Actionは返り値なし、Funcは返り値あり。
引数と返り値の型は<>内に定義する。
Action act = func1
Func fnc = func1
匿名メソッドを格納できる。delegateキーワードも不要。
Action act2 = delegate (int x) { Console.WriteLine(x); };
Action act3 = (x) => { Console.WriteLine(x); };