c# - 被覆盖的事件仍然是原始值
问题描述
我在覆盖 C# 中的事件时遇到问题。我希望被SubEventTest
覆盖的OnMyEvent
事件替换EventTest
's OnMyEvent
。然而OnMyEvent
on和 onSubEventTest
是一样的EventTest
,即使尝试不同的标准值EventTest
's也是如此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
为什么会这样,我怎样才能得到预期的输出?
解决方案
推荐阅读
- c - 包含 stdlib.h 会导致代码无法正确编译
- javascript - 如果字符串包含五个@,如何通过chai检查?
- node.js - 在上传到亚马逊 s3 服务器之前,是否需要将图片从图库转换为 base64?
- javascript - 按逗号将 Ajax 结果拆分为 UL 列表
- api - 如何在 Spring Boot 中获取 ResponseEntity 的值?
- google-chrome - 相同的PNG导致两个不同的图像
- php - php中带有OR条件的多个!isset()
- java - 为什么我不能使用 'tostring' 打印?我如何打印包含类的 arry?
- html - 如何将自定义元素与模板一起使用?
- python - 用辅助轴绘制 2 条线,但不显示第一列数据