2

从这个问题的答案内容中我学到了一个新技巧;为事件添加一个简单的处理程序,以避免在引发事件时检查空值。

public static event EventHandler SomeEvent = delegate {};

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

SomeEvent(null,EventArgs.Empty);

这是否会增加大量开销?如果没有,为什么不内置这样的东西?

4

1 回答 1

2

这是否会增加大量开销?如果没有,为什么不内置这样的东西?

它不会增加显着的开销 - 只是在引发事件时进行委托调用。

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

  1. 这不一定是防弹的 - 您仍然可以在之后清除处理程序列表,在这种情况下,您仍然需要适当的检查。
  2. 这确实增加了开销——虽然很小,但在特定情况下,开销可能是有问题的。
于 2012-05-18T19:32:08.080 回答