デリゲート

C#のデリゲートて、C言語でいう関数ポインタみたいなもん(イベントハンドラとかのコールバックに使う、実体をすげ替えられる関数)と思って、なんとなく見よう見まねで使ってたけど、Cの関数ポインタには無い機能も有るのね。


(1) インスタンスのメソッドを代入できる。
 (Cの関数ポインタは静的な関数しか代入できない。)
(2) 複数のメソッドを+=で代入できる、呼び出すと全てが実行される。
 (Cの関数ポインタは1個の関数しか代入できない。)
(3) 非同期呼び出しもできる。(BeginInvoke/EndInvokeメソッドを使う)


(1)はオブジェクト指向言語なら当然そうあらまほしき所。(でもC++にはないような。)
(2)はVisualStudioでGUI作ってたらいっぱい生成されるおなじみの記述。
(3)のご利益は想像はつくけど今のところ未体験。