为什么使用匿名委托声明此事件?

时间:2010-06-09 21:58:43

标签: c# events

我见过人们定义他们的事件是这样的:

public event EventHandler<EventArgs> MyEvent = delegate{};

有人可以解释一下如果没有它,这与定义它有何不同?是否要在提升事件时避免检查null?

2 个答案:

答案 0 :(得分:10)

你知道了 - 添加空委托可以避免这种情况:

public void DoSomething() { 
    if (MyEvent != null) // Unnecessary! 
        MyEvent(this, "foo"); 
} 

答案 1 :(得分:2)

此声明确保MyEvent永远不会为空,从而消除了每次都必须检查null的繁琐且容易出错的任务,每次触发事件时都会执行额外的空委托。< / p>