c#中的事件就是委託的乙個變數。它和屬性、方法一樣,都是類的成員。只不過事件是指向乙個方法,當事件被觸發時,就會執行物件的相關方法。
事件的這種對方法的引用並不是寫死在**裡面的,而是可以進行更改的。闢如:我們在dotnet中按鈕的onclick事件,它可以指向符合onclick事件簽名的任何乙個方法。
1.事件的定義使用event關鍵字:
public event cryhandler duckcryevent;
其中的cryhandler是乙個delegate。從上面的**我們可以看出來:事件就是乙個委託型別的變數。
private delegate void cryhandler();
2.指定事件處理程式:
指定事件處理程式就是為事件掛接方法的過程。
duckcryevent +=new cryhandler(cry);
public void cry()
3.執行事件
執行事件就是呼叫事件所指向方法的過程。一般對事的執行**寫在相應的方法或屬性中,如果方法或屬性被呼叫時就觸發事件。
public void beshaked()
4.完整的例子:
using system;
public delegate void cryhandler();
//玩具小鴨的類
class duck
//小鴨唱歌事件對應的處理方法
public void cry()
//小鴨被搖動
public void beshaked()
}class class2}
C 多播委託與事件
1.發布 訂閱模式 委託本身是乙個更大的模式的基本單位,這個模式稱為發布 訂閱。委託的使用及其對publish subscribe模式的支援是需要學習的重點。雖然,很多問題都可以單獨用委託來實現,但是事件構造提供了額外的 封裝 使publish subscribe模式更容易實現,更不容易出錯。2.多...
C 中的委託 多播委託 以及事件的概要
1 委託 我們定義一段 person obj new person 就是說obj 這個 引用 型別指向了乙個新的物件 new person 同樣的,委託也是一種 引用 型別,一種能夠指向方法的型別。在方法中有無引數的方法和帶引數的方法,引數也是一種型別,所以我們就可以將這種 委託型別 傳入到方法中。...
C 多播委託和事件的區別與關係
事件是對委託的封裝。如果乙個類裡,你把乙個委託宣告為 public 了,那麼外部就可以隨意改變委託變數的值,包括清空委託變數等,這樣的話就違背了物件導向思想的封裝特性 但如果宣告為 private 那就失去了委託的意義 在外部不能給委託新增函式引用 此時就需要事件了。可以把事件看成是委託的例項,事件...