为什么要使用匿名委托声明这个事件?

6

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

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

有人能解释一下这与不使用它定义有什么不同吗?这是为了避免在触发事件时检查空值吗?

如果我没错的话,这个术语的正确说法应该是“匿名方法”,而不是“匿名委托”。 - Manish Basantani
2个回答

10

你说的对 - 添加空委托可以避免这种情况:

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

2
这个声明确保MyEvent永远不会为空,省去了每次都需要检查是否为空的繁琐和容易出错的任务,但代价是每次触发事件时都会执行一个额外的空委托。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接