向事件添加普通处理程序会导致显着的开销吗?

时间:2012-05-18 19:30:17

标签: c#

从答案的内容question我学到了一个新技巧;向事件添加一个简单的处理程序,以避免在引发它时进行空检查。

public static event EventHandler SomeEvent = delegate {};

并在没有空检查的情况下调用它:

SomeEvent(null,EventArgs.Empty);

这会增加很多开销吗?如果没有,为什么不是这样的内置?

1 个答案:

答案 0 :(得分:2)

  

这会增加很多开销吗?如果没有,为什么不是这样的内置?

它不会添加重要的开销 - 只是在引发事件时的委托调用。

至于为什么它不是内置的 - 有一些缺点:

  1. 这不一定是防弹 - 你仍然可以clear the handler list afterwards,在这种情况下,你仍然需要进行适当的检查。
  2. 这确实增加了开销 - 虽然很小,但在特定情况下开销可能会有问题。