0
class A
{
public event EventHanler MyEvent;
protected virtual void OnMyEvent(EventArgs e)
{
if (MyEvent!=null)
MyEvent(this, e);
}
public void DoEvent()
{
//................
MyEvent(this, new EventArgs());
}
}
class B: A
{
private A a = new A();
public B()
{
a.MyEvent += MyMethod;
}
public void MyMethod(object sender, EventArgs e)
{
Console.WriteLine("Event handler");
}
}
class C : A
{
private A a = new A();
protected override void OnMyEvent(EventArgs e)
{
base.OnMyEvent(e);
Console.WriteLine("OnMyEvent overriding");
}
}
私はイベントに登録して、クラスB
とC
のOnMyEvent()メソッドをオーバーライドします。メソッドbase.OnMyEvent(e)
を呼び出す給与は、方法C.OnMyEvent(...)
の冒頭にあります。メソッドをオーバーライドしてイベントを購読するのは同じですか?
ここまでのところ、違いはありません。言い換えれば、オーバーライドメソッドの冒頭でbase.OnMyEvent(e)
と呼び出すと、イベントに登録するだけで同じ意味になりますか?
実際には違いはありませんか?
:私はイベントを処理したい場合は、 'A.MyEvent'は、クラスでそれを扱う 'B'のとでは違いがありますクラス 'C'? – Alexandre
今書いているとおり、クラス 'B'はイベントを処理していますが、クラス' C'はそうではありません。そう、それは大きな違いです。 – Keith