トップ回答者
イベントプロパティの宣言と初期化とは同時には行なえないんでしょうか

質問
回答
-
通常は add および remove は記述する必要がありません。
http://msdn.microsoft.com/ja-jp/library/8627sbea.aspx以下のページの「クラスにインターフェイス イベントを実装するには」のような実装をします。
使用例にはイベント アクセサ add および remove も記述するサンプルもあります。
http://msdn.microsoft.com/ja-jp/library/ak9w5846.aspxイベントは EventHandler や EventArgs かその継承を使います。
event EventHandler xxxEventHandler;
void Onxxx(EventArgs e) のメソッドをイベント定義側で書いておくと便利です。
void xxx(object sender, EventArgs e) の形式のメソッドが呼ばれます。 -
C# 1.2仕様書(VS2005付属)より。
Code Snippetclass X
{
public event D Ev;
}この宣言をコンパイルすると、次のようになります。
Code Snippetclass X
{
private D __Ev; // field to hold the delegate
public event D Ev {
add {
lock(this) { __Ev = __Ev + value; }
}
remove {
lock(this) { __Ev = __Ev - value; }
}
}
}これに似た形でadd/removeを実装するのであれば、__Evに相当する変数にdelegat { }を初期値として代入するようなコードを書けば良いのでは?
(Hongliangさんが既に案として出されているものです)
すべての返信
-
通常は add および remove は記述する必要がありません。
http://msdn.microsoft.com/ja-jp/library/8627sbea.aspx以下のページの「クラスにインターフェイス イベントを実装するには」のような実装をします。
使用例にはイベント アクセサ add および remove も記述するサンプルもあります。
http://msdn.microsoft.com/ja-jp/library/ak9w5846.aspxイベントは EventHandler や EventArgs かその継承を使います。
event EventHandler xxxEventHandler;
void Onxxx(EventArgs e) のメソッドをイベント定義側で書いておくと便利です。
void xxx(object sender, EventArgs e) の形式のメソッドが呼ばれます。 -
C# 1.2仕様書(VS2005付属)より。
Code Snippetclass X
{
public event D Ev;
}この宣言をコンパイルすると、次のようになります。
Code Snippetclass X
{
private D __Ev; // field to hold the delegate
public event D Ev {
add {
lock(this) { __Ev = __Ev + value; }
}
remove {
lock(this) { __Ev = __Ev - value; }
}
}
}これに似た形でadd/removeを実装するのであれば、__Evに相当する変数にdelegat { }を初期値として代入するようなコードを書けば良いのでは?
(Hongliangさんが既に案として出されているものです)