C 中事件的完整宣告,事件與委託欄位的區別

2021-10-02 02:37:46 字數 1122 閱讀 7358

1、宣告乙個委託

如果要宣告乙個事件,首先要有乙個委託來約束事件和事件處理器的簽名

//宣告乙個委託

public

delegate

void

ordereventhander

(customer customer,

ordereventargs e)

//構造委託的引數 ordereventargs

public

class

ordereventargs

:eventargs

public

string size

}

2.接下來,我們通過事件的完整宣告和簡要宣告,以及事件的觸發來分別對比這兩者之間的區別。

(1)事件的完整宣告

//這個類就是是事件的擁有者

public

class

customer

remove

//移除事件處理器

}//***********************************=//

//這裡是觸發事件的方法

public

void

onorder()

}}

(2)事件的簡略宣告

//這個類就是是事件的擁有者

public

class

customer

}}

分析: 事件的簡略宣告和委託欄位的區別?

(1)從宣告來看,事件的簡略宣告僅僅比委託欄位的宣告多了乙個event關鍵字,使事件的宣告看起來就像乙個委託字段

(2) c#原本規定事件只能放在+=號和-=號的左邊,因此在完整宣告中要觸發事件需要通過委託 this.ordereventhander.invoke(this, e) 來觸發。但在簡略宣告中,由於已經不存在了委託字段,所以c#預設同意了可以使用「.」操作符來觸發事件,使得對事件的觸發操作看起來更像乙個委託欄位的操作,這就更加深了事件和委託欄位的混淆。

c 中的委託與事件

c 委託與事件 一 委託 關鍵字 delegate 委託是c 中的一種型別,它實際上是乙個對某個方法引用的類 委託是一種引用方法型別 一旦為委託分配了方法 委託將與該方法有相同完全的行為 委託具有引數 和返回值 delegate類能擁有乙個簽名 signature 只能持有與他簽名相匹配的方法的引用...

C 中的事件與委託

delegate委託 delegate是c 中的一種型別,它實際上是乙個能夠持有對某個方法的引用的類。與其它的類不同,delegate類能夠擁有乙個簽名 signature 並且它 只能持有與它的簽名相匹配的方法的引用 它所實現的功能與c c 中的函式指標十分相似。它允許你傳遞乙個類a的方法m給另乙...

C 中的委託與事件

寫這篇博文的目的是要記錄一下學習委託與事件的心的與 方便之後查閱 1 委託,是乙個函式的簽名,規定了函式的返回值與引數列表。類似於這類函式的乙個 簽名相同但是用途不同的函式s,要執行的時候就通過 來執行,使得函式執行得到諸多的方便。delegate相當於乙個類,具有類的一些特性。2 事件,事件就是應...