1. 先有方法,然後再有委託,最後再有事件
2. 思考能不能將 a方法 作為引數,傳遞給 b方法呢?
eg: 在傳統的程式設計方式中,a方法 呼叫 b方法的方式如下:
//洗菜
public void washing(string vegetables)
//做家務
public void doinghousework( )
能不能像vegetables作為washing()的引數那樣,來實現
doinghousework()呼叫washing()呢,那**應該怎麼寫呢,
//洗菜
public void washing(string vegetables)
/* 能不能將washing()作為引數,
傳遞給doinghousework()呢
*///做家務
public void doinghousework( )
貌似以前沒怎麼聽說過,可以將方法作為另乙個方法的引數哦,那這個引數的型別應該是 沒錯就是委託3. 委託 delegate(方法的型別):
類似於c/c++中的函式指標
委託的宣告:
public delegate void houseworkdelegate(string str);
注意:delegate:是委託的關鍵字,由上面委託的宣告可以看出,它除了多了delegate關鍵字,其他部分跟方法的宣告完全一樣
那麼上面的例子使用委託後,應該改為:
//宣告委託
public delegate void houseworkdelegate(string str);
//洗菜
public void washing(string vegetables)
//doinghousework()擁有乙個houseworkdelegate型別的引數
public void doinghousework(houseworkdelegate houseworkdelegate)
更多委託相關的資訊,可以檢視另一篇部落格:c#中的委託 delegate(委託 也叫代表,代表一類方法)
4. 事件 event:
如果說 委託 是對方法的抽象(其實是方法的型別);那麼事件 則是在委託的基礎上 進行了一些特殊的處理,加工
所以 事件 本質還是委託。
4.1. 事件的宣告:
public event houseworddelegate housewordevent;
注意:event:是事件的關鍵字, event後面緊接的是 委託的型別 houseworddelegate,
所以宣告事件之前,必須先宣告事件所要使用的delegate,由宣告更可以看出,事件就是加工過後的委託!!
借助reflactor來對 event的宣告語句做一**,看看為什麼會發生這樣的錯誤:
5. 總結:
委託,事件,歸根到底其實就是對方法的加工和特殊處理後的產物。
C 中的委託和事件
委託類似於c 中的函式指標,c 中的委託申明如下 delegate void mydelegate 只要該委託執行的方法與委託申明的簽名一致,就能呼叫委託來執行該方法,例如在本例中,有個方法為 void method 那麼就可以如下呼叫 mydelegate delegate new mydeleg...
C 中的委託和事件
委託 和 事件在 net framework中的應用非常廣泛,然而,較好地理解委託和事件對很多接觸c 時間不長的人來說並不容易。它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了,而沒有過去的人每次見到委託和事件就覺得心裡憋得慌,渾身不自在。本文中,我將通過兩個範例由淺入深地講述什麼是委託 為什麼...
C 中的委託和事件
較好地理解委託和事件對很多接觸c 時間不長的人來說並不容易。它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了,下面的例子如果能很好的理解了,那麼基本的委託和事件就基本有所了解了!namespace 委託和事件 方法三委託的定義 public delegate void greetdelegate...