0
考慮以下情況,可能是這樣的情況是非常假想爲什麼虛擬事件不會不調用重寫處理
public delegate void MyDel();
public class T1
{
public T1()
{
}
public virtual event MyDel MyEvent;
public virtual void RaiseEvent()
{
MyEvent();
}
protected virtual void HandleEvent()
{
MessageBox.Show("base event");
}
}
public class T2:T1
{
public override event MyDel MyEvent;
public T2()
{
MyEvent += new MyDel(HandleEvent);
}
protected override void HandleEvent()
{
MessageBox.Show("overridden event");
}
}
和主要的客戶端代碼
baseT = new T2();
baseT.MyEvent += new MyDel(() => MessageBox.Show("From client"));
baseT.RaiseEvent();
爲什麼它拋出一個異常,爲什麼虛擬事件的行爲不像虛擬/重寫的方法?
您是否讀過異常信息?它說什麼? – Botz3000 2013-03-13 07:20:58
@ Botz3000::),我知道你指向'對象引用',但是如果你無法獲得虛擬覆蓋行爲,爲什麼虛擬覆蓋可能在事件的第一位 – TalentTuner 2013-03-13 07:23:51