委託的宣告原型是
delegate 《函式返回型別》 《委託名》 (《函式引數》)
例如:public delegate void calculator(int i, int j);
這樣就定義了乙個委託,但是委託在.net內相當於宣告了乙個類,類如果不例項化為物件,很多功能是沒有辦法使用的,委託也是如此.
下面,直接來定義乙個委託,並且來使用委託。
namespace_delegate
", i +j);
}private
static
void sub(int i, int j)//
宣告減法
", i -j);
}private
static
void calculator(int i, int j, calculator cal)//
calculator這個方法有三個引數,第三個compute是之前定義的委託型別。
//委託是乙個類,它定義了方法的型別,使得可以將方法當作另乙個方法的引數來進行傳遞。
/*static void main(string args)
*///
從此可以看出compute和int都是資料型別,那麼是不是可以定義兩個變數,把方法賦給變數。
static
void main(string
args)
}}
了解了委託之後,咱們來講一下事件。
c#中事件的定義和委託的宣告其實是非常的相似:
event 《委託型別》 事件名
例如: public event computer oncomputer;//定義事件,將其與**繫結
宣告了事件之後就可以例項化這個事件,註冊函式到事件中。
下面咱用乙個例子來說明:
namespace_delegate}}
public
class compere //
主持人"
,c);
}public
static
void
main()
}}
eventcal類相當於乙個時間發布者,它定義了事件的相關資訊,包括定義了乙個事件用於計算(oncomputer),以及乙個觸發事件的函式(fireevent())
compere類則相當於乙個事件訂閱者,或者說叫做主持人吧。它定義了乙個事件處理函式(eventhandle()),並用+=將其與事件聯絡起來。從而使事件觸發的時候能夠呼叫我這個方法,其實就是計算一下a+b的值。
注意:事件處理函式的方法簽名要與**的方法簽名相同,這是非常重要的一點
namespace_delegate}}
public
class myeventargs : eventargs//
定義事件引數類
}public
class compere //
主持人",e._a+e._b);
}public
static
void
main()
}}
這個是有引數的事件。
posted @
2016-04-04 18:17
土倫 閱讀(
...)
編輯收藏
C 中的委託和事件
委託類似於c 中的函式指標,c 中的委託申明如下 delegate void mydelegate 只要該委託執行的方法與委託申明的簽名一致,就能呼叫委託來執行該方法,例如在本例中,有個方法為 void method 那麼就可以如下呼叫 mydelegate delegate new mydeleg...
C 中的委託和事件
委託 和 事件在 net framework中的應用非常廣泛,然而,較好地理解委託和事件對很多接觸c 時間不長的人來說並不容易。它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了,而沒有過去的人每次見到委託和事件就覺得心裡憋得慌,渾身不自在。本文中,我將通過兩個範例由淺入深地講述什麼是委託 為什麼...
C 中的委託和事件
較好地理解委託和事件對很多接觸c 時間不長的人來說並不容易。它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了,下面的例子如果能很好的理解了,那麼基本的委託和事件就基本有所了解了!namespace 委託和事件 方法三委託的定義 public delegate void greetdelegate...