2012-05-18 41 views
2

从这个question的答案的内容我学到了一个新的窍门;为事件添加一个简单的处理程序,以避免在引发时进行空值检查。为事件添加简单处理程序是否会导致重大开销?

public static event EventHandler SomeEvent = delegate {}; 

,并调用它没有空检查:

SomeEvent(null,EventArgs.Empty); 

这是否添加显著的开销?如果没有,为什么不是这样的内置?

回答

2

这是否会增加显着的开销?如果没有,为什么不是这样的内置?

它不会添加显着开销 - 只是在事件发生时的委托调用。

至于为什么它没有内置的 - 有几个缺点的:

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

有人会认为,如果他们要在这个功能中构建清理处理程序列表将会留下微不足道的东西。你能否提供一个场景的例子,其中增加的开销会有问题? – NominSim

+0

@NominSim插座和计时器让人想起 - 在这些情况下,你不会想要额外的开销...... –

+0

那么你会有任何开销,无论是检查null或调用一个微不足道的代表,这是更多? – NominSim

相关问题