2013年11月9日

Ruby側に公開するイベントの処理方法

C# でイベントハンドラにイベントが登録されているかどうかを判定するために
Nullチェックするのが定石のようですが、
以下のサイトで、空デリゲートを最初に登録するという方法が紹介されています。

イベントに空デリゲートを仕込ませてみる

public event Action<object> SampleEvent;
と定義して、どこかのメソッド内で
if (SampleEvent != null) {
  //処理
  SampleEvent();
}



public event Action<object> SampleEvent = delegate {};
と定義と初期化して、どこかのメソッド内で
//処理
SampleEvent();

となります。


このサイトでもメリット・デメリットの議論がありますが、
Nullチェック忘れの予防のために、masoojerにはこちらを採用したいと思います。