我见过人们定义他们的事件是这样的:
public event EventHandler<EventArgs> MyEvent = delegate{};
有人可以解释一下如果没有它,这与定义它有何不同?是否要在提升事件时避免检查null?
答案 0 :(得分:10)
你知道了 - 添加空委托可以避免这种情况:
public void DoSomething() {
if (MyEvent != null) // Unnecessary!
MyEvent(this, "foo");
}
答案 1 :(得分:2)
此声明确保MyEvent
永远不会为空,从而消除了每次都必须检查null的繁琐且容易出错的任务,每次触发事件时都会执行额外的空委托。< / p>