我需要取消订阅我的活动所订阅的所有代表。但我发现了两种方法......
class Cls
{
delegate void doDel();
static event doDel doE;
void Uns
{
//first
foreach (doDel item in doE.GetInvocationList())
{
doE -= item;
}
//second
doE = null;
}
}
有什么区别?什么方式最好,为什么?
答案 0 :(得分:1)
第一种方法是完全正确的。正如MSDN所述:
使用减法赋值运算符( - =)取消订阅事件:
publisher.RaiseCustomEvent - = HandleCustomEvent;
当所有订阅者都取消订阅活动时,该活动 发布者类中的实例设置为null。