删除处理程序之前我想知道
OnEvent -= 处理程序;
我们是否需要确定处理程序是否为空。 handler为null时,有什么不好的影响吗?
最佳答案
不,如果 handler
为 null,则它是空操作...或者至少,如果它是对 Delegate.Remove
的简单调用,则它是空操作,其中包含的文档包括:
Returns source if value is null or if the invocation list of value is not found within the invocation list of source.
现在一个实际的事件只有一个有效的“删除”方法...并且可以做它想做的任何事情。这将是一个实现不佳的事件,但在传递 null 处理程序时会产生不良影响,因为 null 在委托(delegate)术语中实际上意味着“空调用列表”。
关于c# - 从事件中删除空处理程序有任何副作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4968047/