У меня проблема с переопределением события в C#. Я хочу, чтобы событие SubEventTest
с переопределением OnMyEvent
заменило EventTest
'OnMyEvent
. Однако OnMyEvent
на SubEventTest
такой же, как на EventTest
, даже при попытке использовать другие стандартные значения для EventTest
OnMyEvent
.
Вот код, показывающий мою проблему:
void Main()
{
SubEventTest subEventTest = new SubEventTest();
subEventTest.Call(); // Null reference exception (should be Hello!)
EventTest eventTest = new EventTest();
eventTest.Call(); // Null reference exception (as expected)
}
public class EventTest
{
public delegate void MyEventHandler();
public void Call() => OnMyEvent();
public virtual event MyEventHandler OnMyEvent = null;
}
public class SubEventTest : EventTest
{
public override event MyEventHandler OnMyEvent =
delegate ()
{
Console.WriteLine("Hello!");
};
}
Ожидаемый результат:
Hello!
Null reference exception
Фактический результат:
Null reference exception
Почему это так и как я могу получить ожидаемый результат?