【发布时间】:2015-11-26 04:08:28
【问题描述】:
通常可以在此处找到此类问题的答案,或者,如果没有,请在 MSDN 上找到,但我看了又看,没有找到答案。实验似乎表明代码如下:
SomeControl.Click += null;
没有害处。或者至少触发事件不会通过尝试调用空事件侦听器来抛出异常(我可以说)。但是,Web 上似乎没有任何地方可以验证我希望这样的代码没有做至少 一些我可能不想做的事情。例如,导致 Click 事件认为它可能没有侦听器,并在“现在让我们执行空检查并调用所有非空的侦听器”代码中浪费那些非常宝贵的超超微秒。
如果 RHS 上的侦听器为空,文档似乎应该说明 += 和 -= 运算符的行为。但就像我说的那样,我在任何地方都找不到该文档。不过,我相信这里有人可以提供它....
(显然,我的代码没有硬编码的 null;我的问题更多是关于这样的代码是浪费还是完全无害:
public static void AddHandlers([NotNull] this Button button,
[CanBeNull] EventHandler click = null,
[CanBeNull] EventHandler load = null)
{
button.Click += click;
button.Load += load;
}
或者如果我应该[即,出于任何原因需要]在每个这样的 += 操作周围添加空检查。)
【问题讨论】:
标签: c# events null event-handling