事件是什么
類或?qū)ο罂梢酝ㄟ^事件向其他類或?qū)ο笸ㄖl(fā)生的相關(guān)事情假瞬。 發(fā)送事件的類稱為“發(fā)行者”,接收事件的類稱為“訂閱者”。
事件其實就是一個特殊的委托墩莫,對事件的聲名其實就是聲明一個私有的委托變量翅敌。
語法
聲明一個事件: public event Action 事件名稱;
對事件添加訂閱: 事件名稱 += 要添加的方法名羞福。
對事件取消訂閱: 事件名稱 -= 要取消的方法名。取消所有的方法后蚯涮,事件會置為null治专。
事件的調(diào)用: 事件名稱(); 事件的調(diào)用只能在聲明事件的類中調(diào)用,不可在該類之外調(diào)用遭顶。
事件基本格式:
訪問修飾符 event 委托名稱 事件名稱;
代碼如下:
public delegate void delTest();
public event delTest eventTest;
注冊事件(可以給一個事件注冊多個方法)復(fù)制代碼
代碼如下:
eventTest += new delTest(method1);
eventTest += new delTest(method2);
事件概述
1.發(fā)行者確定何時引發(fā)事件张峰;訂閱者確定對事件作出何種響應(yīng)。
2.一個事件可以有多個訂閱者棒旗。訂閱者可以處理來自多個發(fā)行者的多個事件喘批。
3.沒有訂閱者的事件永遠(yuǎn)也不會引發(fā)。
4.事件通常用于表示用戶操作铣揉,例如單擊按鈕或圖形用戶界面中的菜單選項饶深。
5.當(dāng)事件具有多個訂閱戶時,引發(fā)該事件時會同步調(diào)用事件處理程序逛拱。
6.在 .NET Framework 類庫中敌厘,事件基于 EventHandler委托和 EventArgs基類。
聲明事件
事件和方法一樣具有簽名朽合,簽名包括名稱和參數(shù)列表俱两。事件的簽名通過委托類型來定義,例如:
public delegate void TestEventDelegate(object sender, System.EventArgs e);
.NET Framework 中事件的簽名中旁舰,通常第一個參數(shù)為引用事件源的對象锋华,第二個參數(shù)為一個傳送與事件相關(guān)的數(shù)據(jù)的類。但是箭窜,在 C# 語言中并不強(qiáng)制使用這種形式毯焕;只要事件簽名返回 void,其他方面可以與任何有效的委托簽名一樣。
向類中添加事件需要使用 event 關(guān)鍵字纳猫,并提供委托類型和事件名稱婆咸。例如:
public class EventSource
{
public event TestEventDelegate TestEvent;
private void RaiseTestEvent() { /* ... */ }
}