C 事件 事件本身就是一種多播委託

2021-08-25 13:04:22 字數 947 閱讀 5684

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 那就失去了委託的意義 在外部不能給委託新增函式引用 此時就需要事件了。可以把事件看成是委託的例項,事件...