在所有问题答案的代码中:
检查EventHandler handler
是否为空
EventHandler handler = this.somethingHappened;
if (handler != null)
{
handler(this, EventArgs.Empty);
}
订阅:
observable.SomethingHappened += observer.HandleEvent;
以及互联网上的文章,教程,示例等 虽然我无法理解这个处理程序何时以及如何发生null。
我已经阅读了类似问题的答案:
但我仍然无法理解handler
可能恰好是null
这样的例子和插图。
有人可以解释一下这段代码中的处理程序可能恰好是null
吗?
答案 0 :(得分:2)
很简单,如果尚未为特定事件处理程序分配任何委托,则它将为null,并且尝试调用它将导致NullReferenceException。
在调用它之前执行空检查可防止发生此NullReferenceException。