C#のデリゲート・イベント

JSのイベント駆動とほぼ同じ。

delegete宣言して、その型をもつHandlerを作る。

下で言うと、

HandleFoo が、JSでいうイベント名っぽい。(引数と返り値に対する型付き)

利用側では、 そいつにcallbackを加えるみたいなイメージ。

# 宣言側 (SubClass)
public delegate void FooHandler(String bar); # これはクラス宣言の外で宣言すべき?
public FooHandler HandleFoo = delegate(string bar);  # 初期化しておくと安全


# 利用側 (MainClass)
SubClass.HandleFoo += ("Hello") => { /* handle event */ };  # ラムダ式でもいいし、定義関数でも可
SubClass.HandleFoo += ("World") => { /* handle event */ };  # 複数callbackを登録できる

itpro.nikkeibp.co.jp

yohshiy.blog.fc2.com