事件退订
本文关键字:事件 | 更新日期: 2023-09-27 18:04:06
我需要取消订阅我的事件上订阅的所有委托。但是我找到了两种方法……
class Cls
{
delegate void doDel();
static event doDel doE;
void Uns
{
//first
foreach (doDel item in doE.GetInvocationList())
{
doE -= item;
}
//second
doE = null;
}
}
有什么区别?哪种方式是最好的,为什么?
第一种方法非常正确。如MSDN所述:
使用减法赋值操作符(-=)来取消订阅事件:
出版商。RaiseCustomEvent -= HandleCustomEvent;
当所有订阅者都取消订阅某个事件时,该事件实例设置为null。