c# - 为什么使用 EventArgs.Empty 而不是 null?

标签 c# events eventargs

我记得在多个场合和多个地点读到,在触发典型事件时:

protected virtual OnSomethingHappened()
{
    this.SomethingHappened(this, EventArgs.Empty);
}

如果没有有趣的事件参数,e 应该是 EventArgs.Empty,而不是 null。

我遵循了我的代码中的指导,但我意识到我不清楚为什么这是首选技术。为什么规定的契约(Contract)更喜欢 EventArgs.Empty 而不是 null?

最佳答案

我相信 NOT NULL 背后的原因是当作为参数传递时,该方法不需要潜在地处理空引用异常。

如果您传递 null,并且该方法尝试使用 e 执行某些操作,它将获得空引用异常,而使用 EventArgs.Empty 则不会。

关于c# - 为什么使用 EventArgs.Empty 而不是 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/188692/

相关文章:

c# - Process.WorkingSet64 和 Process.PeakWorkingSet64 的区别

c# - "object sender"和 "EventArgs e"参数有什么用?

C# 字典 ArrayList 计数

c# - 无法在 ASP.NET Core 中使用带有 Identity 的 MySql 数据库

c# - Process.Kill() 需要什么权限?

javascript - 复选框 onchange 事件未触发

javascript - jQuery 中的绑定(bind)事件是非常昂贵还是非常便宜?

javascript - 是否可以在 javascript 函数中包含一个事件?

c# - 订阅另一种形式的按钮点击