什麼是委託?
委託就是持有乙個或者多個方法的物件!並且該物件可以執行,可以傳遞。
宣告委託型別?
委託可以持有方法,那麼持有什麼樣的方法呢?
可以宣告,它是一種引用型別。
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 中的函式指標不同,委託是物件導向 型別安全的,並且是安全的。委託宣告定義一種型別,它用一組特定的引數...