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
イベントをサブスクライブし、クラスおよびでメソッド OnMyEvent() をオーバーライドしますC
。メソッドの呼び出しはメソッドbase.OnMyEvent(e)
の先頭にあることに注意してC.OnMyEvent(...)
ください。
私に関する限り、ここに違いはありません。つまりbase.OnMyEvent(e)
、オーバーライド メソッドの先頭で呼び出すと、イベントをサブスクライブするのと同じ意味になりますか?
実際には違いはありませんか?