理解C 中的委託和事件

2022-03-26 08:02:30 字數 843 閱讀 4415

一直不甚至理解c#中委託和事件的概念和用法,在網上參看數篇文字之後略有所得,好記性不如爛鍵盤,故以文字記下。

首先,設想乙個簡單場景(或許不太貼切)來說明,夜深人靜,屋裡有老鼠躡手躡腳的行動,且隨時提防著貓,如果聽到貓叫,老鼠聞聲立即逃回洞裡。

這個場景可以抽象為委託和事件的幾個要素:

貓和老鼠分別是兩個物件,貓是激發事件的物件,貓叫是乙個方法,同時引發乙個事件,老鼠作為事件的處理者,它的處理結果是聽到貓叫就逃跑,這樣定義乙個委託就是表示老鼠對貓的動靜的監聽。

簡單實現**如下:

using

system;

using

system.collections.generic;

using

system.text;

namespace

testconsole

protected

virtual

void

oncry()}}

public

class

mouse

}class

program}}

小結:cat.catcry +=

newcatlisteninghandler(mouse.run)中catlistenninghandler是乙個委託,它接收乙個無參無返回值的方法名作為引數,catcry是該委託的事件例項用+=操作符把委託掛接到事件,簡單的說就是當觸發catcry事件的時候,方面mouse.run()就會執行。事件例項catcry可以用+=鏈結多個委託例項,而後觸發事件時多個鏈結的委託方法會按序執行。如委託鏈中有不需要的委託,可用-=操作符移除。

以上是對委託和事件的淺薄理解,具體機制和應用還有待深入研究。 

理解C 中的委託和事件

csdn論壇,由於對方也是 所以源作者不詳 有許多人問的,net中的委託以及事件處理。我拿簡單的例子說明一下,是現實中的例子。比如說 乙個公司 場景 你是老闆,手下有兩個員工,小張和小王。你命令小王,如果小張玩遊戲,則小王扣去小張500元錢。這就是現實中的委託。實際上,在寫程式中,程式設計師就是老闆...

C 委託和事件的理解

委託 private delegate string getastring 委託的定義,使用delegate關鍵字 兩種指向方法的寫法 getastring a new getastring x.tostring a指向了x中的tostring方法 getastring a x.tostring 兩...

c 委託和事件再理解

委託 c 中的委託類似於 c 或 c 中的函式指標。使用委託使程式設計師可以將方法引用封裝在委託物件內。然後可以將該委託物件傳遞給可呼叫所引用方法的 而不必在編譯時知道將呼叫哪個方法。與 c 或 c 中的函式指標不同,委託是物件導向 型別安全的,並且是安全的。委託宣告定義一種型別,它用一組特定的引數...