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

时间:2011-02-11 10:40:50

标签: c# .net

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

OnEvent - = handler;

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

2 个答案:

答案 0 :(得分:4)

不,如果handler为空,则为无操作...或者至少,如果它是对Delegate.Remove的简单调用,则会有以下文档:

  

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

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

答案 1 :(得分:3)

不,这不是问题。这就像删除集合中的非现有项目。没有任何事情发生。