从事件中删除空句柄的任何副作用?

use*_*949 5 .net c#

我想知道在删除处理程序之前

OnEvent - =处理程序;

我们是否需要确定处理程序是否为null.当handler为null时,是否有任何不良影响?

Jon*_*eet 4

不,如果handler为 null,则它是无操作...或者至少,如果它是对 的简单调用Delegate.Remove,则它将是无操作,该调用的文档包括:

如果value为 null 或者在source的调用列表中找不到value的调用列表,则返回source

现在,一个实际的事件只有一个有效的“删除”方法......并且可以做任何它想做的事情。这将是一个实现得相当糟糕的事件,但在传递 null 处理程序时会产生不良影响,因为 null 在委托术语中实际上意味着“空调用列表”。