PUROGU LADESU

ポエムがメインのブログです。

【C#】delegate、Action、Func

宣言

関数の入れ物。定義した型の関数を格納できる。
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); };

まとめ

というわけで、ラムダ式を使えばよし。