事件处理程序检查是否为null是什么

本文关键字:null 是什么 是否 程序 检查 事件处理 | 更新日期: 2023-09-27 17:57:27

在所有问题答案的代码中:

  • C#观察者/可观察到的委托的超级简单示例

检查CCD_ 1是否为空

EventHandler handler = this.somethingHappened;  
if (handler != null)  
{  
   handler(this, EventArgs.Empty);  
}  

订阅:

 observable.SomethingHappened += observer.HandleEvent;

以及互联网上的文章、教程、示例等
尽管我无法理解这个处理程序何时以及如何为null。

我已经仔细阅读了类似问题的答案:

  • 在事件处理程序中使用空签入

但我仍然不明白在这样的例子和插图中,CCD_ 2怎么会碰巧是CCD_。

有人能解释一下这段代码中的处理程序是怎么变成null的吗?

事件处理程序检查是否为null是什么

很简单,如果还没有将委托分配给特定的事件处理程序,那么它将为null,尝试调用它将导致NullReferenceException。

在调用之前执行null检查可防止出现此NullReferenceException。