从事件中删除空处理程序有任何副作用吗?

5

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

OnEvent -= handler;

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


尝试过了,看起来似乎没有不良影响。但是想向专家确认一下。 - user496949
2个回答

4
不,如果handler为空,则它是无操作...或者至少,如果它是对Delegate.Remove的简单调用,则会是这样。其中包括文档:

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

现实中,一个实际的event就像一种“remove”方法,而且它可以做任何想做的事情。不过,如果传递一个空处理程序,那么它将是一个相当糟糕的实现事件,因为在代理方面,null实际上意味着“空调用列表”。

3
不,这不是问题。这就像从集合中删除一个不存在的项一样。什么也不会发生。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接