理解C 中的委託和事件

2021-04-09 01:32:38 字數 826 閱讀 2237

(**csdn論壇,由於對方也是**,所以源作者不詳)

有許多人問的,.net中的委託以及事件處理。我拿簡單的例子說明一下,是現實中的例子。比如說:

乙個公司(場景),你是老闆,手下有兩個員工,小張和小王。

你命令小王,如果小張玩遊戲,則小王扣去小張500元錢。

這就是現實中的委託。

實際上,在寫程式中,程式設計師就是老闆,小張和小王就是兩個物件。小張玩遊戲是乙個方法,小張還有乙個遊戲事件,他玩遊戲激發這個事件。而小王就是事件處理物件,他負責把小張的錢扣除500。

所以,委託有如下幾個要素:

1 激發事件的物件--就是小張

2 處理物件事件的物件--就是小王

3 定義委託,就是你讓小王監視小張。

如果這三個要素都滿足的話,則你就寫出了乙個完整事件的處理。

using system;

namespace csharpconsole}

// 負責扣錢的人

public class 小王

public void 扣錢(object sender,eventargs e)}

// 如果玩遊戲,則引發事件

public class 小張

public int 錢 // 此屬性可以操作小張的錢。

set}

public void 玩遊戲()

protected virtual void onplaygame(eventargs e)}}

// 定義委託處理程式

public delegate void playgamehandler(object sender,system.eventargs e); }

理解C 中的委託和事件

一直不甚至理解c 中委託和事件的概念和用法,在網上參看數篇文字之後略有所得,好記性不如爛鍵盤,故以文字記下。首先,設想乙個簡單場景 或許不太貼切 來說明,夜深人靜,屋裡有老鼠躡手躡腳的行動,且隨時提防著貓,如果聽到貓叫,老鼠聞聲立即逃回洞裡。這個場景可以抽象為委託和事件的幾個要素 貓和老鼠分別是兩個...

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 中的函式指標不同,委託是物件導向 型別安全的,並且是安全的。委託宣告定義一種型別,它用一組特定的引數...