2013-03-16 221 views
1

我需要取消訂閱我的活動中訂閱的所有代理人。但我發現有兩種方法可以做到這一點..事件取消訂閱

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

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

    //second 
     doE = null; 
    } 
} 

有什麼區別?什麼方法最好,爲什麼?

回答

1

第一種方法非常正確。作爲MSDN狀態:

  • 使用減法賦值運算符( - =)從事件退訂:

    publisher.RaiseCustomEvent - = HandleCustomEvent;

當所有用戶都從事件退訂,在發佈類的事件 實例設置爲null。