形象的說,事件(event)就是類或對象用來“發出通知”的成員。通過提供事件的句柄,客戶能夠把事件和可執行代碼聯系在一起。
讓我們一起先來看一個事件的例子。如果你熟悉MFC的話,理解這個例子應該不會很難。
程序清單13-1:
public delegate void EventHandler(object sender,EventArgs e); public class Button:Control { public event EventHandler Click; protected void OnClick(EventArgs e){ if(Click!=null) Click(this,e); } public void Reset(){ Click=null; } }
在這個例子中,Click中類Button的一個域,我們可以獲得它的值並進行修改。OnClick方法用於觸發Click事件。
13.1.1 C#事件的聲明
13.1.2 事件的預訂和撤消
13.1.3 事件訪問器
13.1.4 靜態事件
和域、方法等一樣,在聲明中使用了修飾符的事件稱之為靜態事件。靜態事件不與具體的實例相關聯,因此不能在靜態事件的訪問器中引用this關鍵字。此外,在靜態事件聲明時又加上virtual,abstract或override修飾符也都是不合法的。而對於非靜態的事件,我們可以在事件的訪問器中使用this來指代類的實例。