C# 中的事件 —— C# 學習筆記

 事件

事件 (event) 是一種使類或對象能夠提供通知的成員。事件的聲明與字段類似,不同的是事件的聲明包 含 event 關鍵字,並且類型必須是委託類型。 
在聲明事件成員的類中,事件的行爲就像委託類型的字段(前提是該事件不是抽象的並且未聲明訪問器)。該字段存儲對一個委託的引用,該委託表示已添加到該事件的事件處理程序。如果尚未添加事件 處理程序,則該字段爲 null。 List<T> 類聲明瞭一個名爲 Changed 的事件成員,它指示已將一個新項添加到列表中。Changed 事件 由 OnChanged 虛方法引發,後者先檢查該事件是否爲 null(表明沒有處理程序)。“引發一個事件” 與“調用一個由該事件表示的委託”這兩個概念完全等效,因此沒有用於引發事件的特殊語言構造。 客戶端通過事件處理程序 (event handler) 來響應事件。事件處理程序使用 += 運算符附加,使用 -= 運算 符移除。

 

下面的示例向 List<string> 類的 Changed 事件附加一個事件處理程序。

 

using System; 

class Test {  
    static int changeCount;  
    static void ListChanged(object sender, EventArgs e) {   changeCount++;  }  
    static void Main() {   
        List<string> names = new List<string>();   
        names.Changed += new EventHandler(ListChanged);   
        names.Add("Liz");   
        names.Add("Martha");   
        names.Add("Beth");   
        Console.WriteLine(changeCount);  // Outputs "3"  
    } 
} 

 

 

對於要求控制事件的底層存儲的高級情形,事件聲明可以顯式提供 add 和 remove 訪問器,它們在某種 程度上類似於屬性的 set 訪問器。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章