[英]C# events with nullable reference types enabled - how to declare?
在我们在 C# 中使用可空引用类型 (NRT) 之前,事件和触发器方法将像这样声明:
public event EventHandler MyEvent;
private void TriggerEvent()
{
this.MyEvent?.Invoke(this, EventArgs.Empty);
}
现在,启用 NRT 后,事件类型应该声明为EventHandler
还是EventHandler?
:
public event EventHandler MyEvent;
// or
public event EventHandler? MyEvent;
private void TriggerEvent()
{
this.MyEvent?.Invoke(this, EventArgs.Empty);
}
我会说EventHandler?
但是我能找到的所有 C# 文档(仍然)都说EventHandler
(没有?
)。
更新:编辑这个问题是因为有人(?)将此标记为这个问题的重复——这显然不是重复的。 我知道什么?
方法。 这不是这里的问题。
你是对的; 它确实应该是EventHandler?
因为未订阅的事件(默认)由null
委托实例支持(至少在使用类似字段的事件时,按照此处)。 文档并不总是包含可为空的引用类型签名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.