C 中的方法 函式 ,委託和事件

2021-09-08 22:21:48 字數 1677 閱讀 6105

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...