1

我需要取消订阅我的活动订阅的所有代表。但是我找到了两种方法来做到这一点..

class Cls
{
    delegate void doDel();
    static event doDel doE;

    void Uns
    {
    //first
    foreach (doDel item in doE.GetInvocationList())
    {
        doE -= item;
    }

    //second
       doE = null;
    }
}

之间有什么区别?什么方法最好,为什么?

4

1 回答 1

1

第一种方法是非常正确的。正如MSDN所说:

  • 使用减法赋值运算符 (-=) 取消订阅事件:

    发布者.RaiseCustomEvent -= HandleCustomEvent;

当所有订阅者都取消订阅事件时,发布者类中的事件实例设置为空。

于 2013-03-16T10:45:49.527 回答