デリゲート
デリゲート型に代入するメソッドは、基本的にラムダ式を使えば良い code:cs
delegate int Bar( int a, int b ); // int2つを受け取って、intを返すメソッドの型Barを宣言
Bar bar = ( a, b ) => { return a * b; }; // Bar型の変数barを宣言して、ラムダ式で初期化する。
bar( 2, 3 ); // => 6
Bar fuga = delegate(a, b){ return a + b); // 無名関数っぽい書き方も出来る(多分)
参考
System.Action デリゲート
いちいちdelegateを宣言するのも面倒なので、最初から用意されているdelegate型
戻り値が無い場合に使用する
code:cs
Action foo = ()=>{/* FOO */}; // 引数も戻り値も返さない
Action<int> foo2 = (int i) => {/* FOO2 */}; // int引数を一つ受ける
System.Func デリゲート
戻り値のあるAction
code:cs
Func<int, int, int> bar = ( a, b ) => { return a * b; }; // int2つ受け取ってintを返す
delegate型に、+=で複数のメソッドを登録できる
code:cs
Action foo;
foo += ()=>hoge;
foo += ()=>fuga;
foo -= ()=>hoge;
event
delegate型を宣言する時に、eventキーワードを付ける事で、代入と実行操作のみprivate(のような感じ)に出来る 参考
System.EventHandler デリゲート
sendor(Invokeしたインスタンス)とargsを予め用意したdelegate型
参考
直訳的には委譲そのものを指すっぽい。