c#用委託來實現事件通知機制。委託相當與c++函式指標。整個過程涉及乙個呼叫者,乙個被呼叫者,還有就是這個委託。
有以下幾步: 1. 申明委託, 2.定義呼叫者和呼叫的函式, 3.定義被呼叫者和具體實現的函式(被呼叫的函式)
1.申明委託 ,在包裡或者類裡,public
public
delegate
void
playgame(object sender, eventargs e
); 2.定義呼叫者(類letsgame)和呼叫委託的函式,在呼叫者裡要有委託的例項(呼叫者扔出乙個委託,被呼叫者給這個委託賦值)
class
letsgame }
3. 定義被呼叫者(類ms)和具體實現的函式(被呼叫的函式),也就是concrete class的實現或者叫函式指標例項。打個比方,在乙個叫ms的類中實現.ms中對呼叫者中委託的例項進行賦值.
class
ms public
void
msplaygame(object sender, eventargs e) }
這樣當呼叫letsgame.startplay的時候就會呼叫ms.msplaygame.
對照一下c#的gui事件處理或者asp.net的web控制項事件處理,能幫我們更好的理解委託和事件.大家一定很熟悉asp.net裡下面的**
private
void
initializecomponent()
private
void
button1_click(
object
sender, system.eventargs e)
這就是用委託來實現事件.你可能發現我們並沒有給它宣告委託物件並通過event關鍵字來引用該委託物件,那是因為asp.net早就幫我們做好了該項工作,其委託物件是system.eventhandler. button1相當於上面的letsgame的例項,是呼叫者,button1_click是被呼叫方法.當你click button1後,button1就會呼叫button1_click.
我覺得這種機制和design pattern裡的observer很類似,我們完全可以用observer來達到同樣的效果,但是用委託更靈活,不需要定義乙個inte***ce然後所有的concrete class都實現某個方法,函式指標(委託)更靈活.
還有,委託不一定非要和事件一起用,單獨用的時候就是函式指標.
c 委託事件
1,什麼是委託 委託是什麼?從生活理解就像是你是乙個c 程式設計師,你對c 並不了解,當需要進行c 分析的時候你委託給你的一位懂c 的同事幫你來完成 在c 中,委託的作用是這樣描述的 委託就像乙個函式的指標,在程式執行時可以使用它們來呼叫不同的函式。簡單點說,委託能夠引用函式,通過傳遞位址的機制完成...
C 委託事件
一 委託 委託類似於函式指標,但函式指標只能引用靜態方法,而委託既能引用靜態方法,也能引用例項方法。委託使用分三步 1 委託宣告。2 委託例項化。3 委託呼叫。例程一 程式 using system namespace 委託 private int add int num1,int num2 例中,...
C 委託事件
1 namespace222 2324 25 26 建立執行方法 27 28 29 30 31static int stratrun int count,int num count num 3233 34 35 第一步宣告委託 36 37 計算前的總數 38 數字39 計算後的總數 40public...