CSharp2.0 Event

Last-modified: 2007-12-31 (月) 16:07:11

1.0との差異

C# 1.0の記法も使えますが、2.0になって新しい記法が出ています。
まず、イベント作成にdelegateが不要です。
Microsoft FxCopを使うと、「そんなデリゲートは消しちまえ」と怒られます。

2.0 の記法

イベントを受ける関数

イベントを受ける関数は、第一引数にobject、第二引数にSystem.EventArgsを受けます。
戻り値の型はvoidです。

 void OnXxxxEvent(object sender, System.EventArgs eventArgs)
 {
 }

イベントを登録する

イベントを登録する際は、デリゲートではなく、System.EventHandlerをnewします。
引数にはイベントを受ける関数を渡します。

 hoge.XxxxEvent += new System.EventHandler(OnXxxxEvent);

イベントを作る側

イベントを作成する前に、まずSystem.EventArgsを継承したクラスを作成する必要があります。

 class XxxxEventArgs : System.EventArgs
 {
 }

実際にイベントを作成する場合、以下のように System.EventHandler を使用します。

 public event System.EventHandler XxxxEvent;

イベントを通知するときは、以下のように行います。

 if (XxxxEvent != null)
   XxxxEvent(this, new XxxxEventArgs());

まとめ

以上が、C# 2.0でのイベント作成&登録の流れです。