更新 : 2007 年 11 月
イベントは、宣言元のクラス内でしか呼び出せない特殊なマルチキャスト デリゲートです。クライアント コードは、イベント発生時に呼び出されるメソッドへの参照を提供することにより、イベントにサブスクライブします。それらのメソッドは、イベント アクセサを使用してデリゲートの呼び出しリストに追加されます。イベント アクセサはプロパティ アクセサに似ていますが、イベント アクセサには add および remove という名前が付いている点が異なります。ほとんどの場合、カスタム イベント アクセサを指定する必要はありません。コードでカスタム イベント アクセサを指定していない場合は、コンパイラによって自動的に追加されます。ただし、カスタム動作を指定することが必要な場合もあります。「方法 : インターフェイス イベントを実装する (C# プログラミング ガイド)」のトピックでは、そのような場合の一例を示しています。
使用例
次の例は、カスタム イベント アクセサ add および remove を実装する方法を示しています。アクセサ内部のコードは任意のコードに置き換えることができますが、新しいイベント ハンドラ メソッドを追加または削除する前に、イベントをロックすることをお勧めします。
event EventHandler IDrawingObject.OnDraw
{
add
{
lock (PreDrawEvent)
{
PreDrawEvent += value;
}
}
remove
{
lock (PreDrawEvent)
{
PreDrawEvent -= value;
}
}
}