繁体   English   中英

C# 启用了可空引用类型的事件 - 如何声明?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM