1、事件的定義
事件:當一個特定的程序事件發生時,程序的其餘部分能夠獲得該事件已經發生的通知,同時運行相應處理程序。
事件的不少部分都與委託相似。實際上,事件就像專門用於特殊用途的簡單委託。
事件包含了一個私有的委託,事件被觸發時,它調用委託來依次調用調用列表中的方法。spa
2、事件的使用步驟
1. 聲明事件的委託類型
事件和事件處理程序必須有共同的簽名和返回類型,它們經過事件的委託類型進行描述。
BCL(Base Class Library,基類庫)聲明瞭一個叫作EventHandler的委託,專門用於系統事件。
2. 聲明事件
(1)事件在事件發佈者類內部進行聲明。
(2)當聲明的事件爲public時,稱爲發佈了事件。
(3)事件成員被隱式自動初始化爲null。
示例:對象
注:不能使用對象建立表達式(new 表達式)來建立發佈者對象。
3. 聲明事件處理程序
事件訂閱者須要聲明當事件觸發時執行的方法,即事件處理程序。
事件處理程序方法的簽名和返回類型必須與事件委託類型的簽名和返回類型一致。
4. 訂閱事件
事件訂閱者使用+=運算符來爲事件增長事件處理程序,即稱爲訂閱事件。
事件處理程序能夠是實例方法、靜態方法、匿名方法,以及Lambda表達式。
一樣的,能夠使用-=運算符把事件處理程序從事件中移除。若是一個處理程序向事件註冊了屢次,那麼移除程序時,將只移除列表中該處理程序的最後一個實例。
5. 觸發事件
觸發事件的語法和調用方法同樣:
使用事件名稱,後面跟參數列表。
參數列表需與事件委託類型相匹配。
事件源代碼組件圖示:blog
事件使用完整示例:事件