在 C# 中使用可空引用类型 (NRT) 之前,事件和触发器方法将如下声明:
public event EventHandler MyEvent;
private void TriggerEvent()
{
this.MyEvent?.Invoke(this, EventArgs.Empty);
}
Run Code Online (Sandbox Code Playgroud)
现在,启用 NRT 后,事件类型应该声明为EventHandler或EventHandler?:
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 ?)。
更新:编辑此问题是因为有人(?)将其标记为此问题的重复项- 这显然不是重复项。我知道什么?意思。这不是这里的问题。
你是对的; 它确实应该如此,EventHandler?因为取消订阅的事件(默认)由null委托实例支持(至少在使用类似字段的事件时,如此处)。该文档并不总是容纳可为空的引用类型签名。
| 归档时间: |
|
| 查看次数: |
1385 次 |
| 最近记录: |