這兩天學習c#的委託、事件,看的我是雲裡霧裡,還好看了幾個例,總算是基本上弄懂了。在網上看到了一篇總結委託與事件的文章,寫的很基礎,很容易懂。
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.
C 委託與事件區別簡單總結
前天接了個 面試,被問到事件與委託的區別,雖然一直用但真要你說有什麼區別一時半會還真說不上來。於是問google老師,得到如下答案 2.委託可以在外部被其他物件呼叫,而且可以有返回值 返回最後乙個註冊方法的返回值 而事件不可以在外部呼叫,只能在宣告事件的類內部被呼叫。我們可以使用這個特性來實現觀察者...
c 委託與事件
c 委託與事件 心得 c 用委託來實現事件通知機制。委託相當與c 函式指標。整個過程涉及乙個呼叫者,乙個被呼叫者,還有就是這個委託。實現步驟有以下幾步 1.申明委託,2.定義呼叫者和呼叫的函式,3.定義被呼叫者和具體實現的函式 被呼叫的函式 1.申明委託 在包裡或者類裡,public public ...
C 委託與事件
在c 中,委託類似於c 中的 機制,宣告乙個委託型別,可以分別採用例項方法和靜態方法例項化了委託,所不同的是採用靜態方法例項化的委託,它的 target 屬性為null 而用例項方法例項化的委託,它的 target 屬性為該例項。但是這裡要注意,如果你用 console.writerline del...