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

Seb*_*ski 7 c# events

在 C# 中使用可空引用类型 (NRT) 之前,事件和触发器方法将如下声明:

public event EventHandler MyEvent;

private void TriggerEvent()
{
    this.MyEvent?.Invoke(this, EventArgs.Empty);
}
Run Code Online (Sandbox Code Playgroud)

现在,启用 NRT 后,事件类型应该声明为EventHandlerEventHandler?

public event EventHandler MyEvent;
// or
public event EventHandler? MyEvent;

private void TriggerEvent()
{
    this.MyEvent?.Invoke(this, EventArgs.Empty);
}
Run Code Online (Sandbox Code Playgroud)

我想说,EventHandler?但我能找到的所有 C# 文档(仍然)都说EventHandler(without ?)。

更新:编辑此问题是因为有人(?)将其标记为此问题的重复项- 这显然不是重复项。我知道什么?意思。这不是这里的问题。

Mar*_*ell 8

你是对的; 它确实应该如此,EventHandler?因为取消订阅的事件(默认)由null委托实例支持(至少在使用类似字段的事件时,如此处)。该文档并不总是容纳可为空的引用类型签名。