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 2012-04-26 09:11:55
它現在寫的方式是,類「B」處理事件,但類「C」不處理。所以是的,這是一個巨大的差異。 – Keith 2012-04-26 15:08:00