簡單理解委託和事件

2021-08-09 14:40:27 字數 1449 閱讀 6374

什麼是委託?

委託就是持有乙個或者多個方法的物件!並且該物件可以執行,可以傳遞。

宣告委託型別?

委託可以持有方法,那麼持有什麼樣的方法呢?

可以宣告,它是一種引用型別。

delegate

void actcute();

定義委託型別的物件?

既然是種型別,就可以定義該型別的物件。

actcute actcute;
給委託物件賦值?

class dog

}//使委託持有上面定義的方法

actcute = dog.wagtail;

使用委託型別?

像呼叫函式一樣使用委託型別。

actcute();
什麼是匿名方法?

delegate

void actcute();

actcute del;

del = delegate();

什麼是lambda表示式?

del = delegate();

del = () => ;

發布者和訂閱者

通知某件事情發生的,就是發布者。(我發布了微博)

對某件事情關注的,就是訂閱者。(我關注了微博)

事件觸發和註冊

事件發生時,會通知所有關注該事件的訂閱者。(發了一條新微博)

想在事件發生時被通知,必須註冊以表示關注。(我關注了微博)

用程式語言解釋

事件發生時,通知訂閱者,就是呼叫訂閱者的註冊函式。註冊,就是告訴發布者呼叫哪乙個註冊函式。

事件宣告

delegate

void handler();

public

event handler newdog;

newdog是乙個成員,並且會被隱式自動初始化為null

事件訂閱

newdog += 方法 //訂閱

newdog -= 方法 //取消訂閱

方法可以是:例項方法,靜態方法,匿名方法,lambda表示式。

事件觸發

if( newdog != null)

事件可以理解成是一種封裝的受限制的委託。

C 簡單的理解委託和事件

在c 中可以利用 函式指標 將對方法的引用作為實參傳遞給另乙個方法,而c 中可以利用委託提供相同的功能。但是委託實際上是乙個特殊的類。委託必須直接或間接的派生自system.delegate。實際的委託型別總是派生自system.multicastdelegate 建立委託的時候,編譯器自動繼承的是...

委託和事件的理解

委託 委託是乙個類,它定義了方法的型別,如同變數的型別 string name,delegate printname 只要方法的簽名與委託的簽名相同,就可以把乙個方法賦值給委託型別的方法。委託的用法 1 可以作為形參,將乙個方法傳遞給另乙個方法 2 可以定義委託型別的委託 就像定義乙個string型...

c 委託和事件再理解

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