談到事件,不得不牽扯到兩個角色
事件發行者(publisher):乙個事件的發行者,也稱作是傳送者(sender),其實就是個物件,這個物件會自行維護本身的狀態資訊,當本身狀態資訊變動時,便觸發乙個事件,並通知說有的事件訂閱者。
事件訂閱者(subscriber):對事件感興趣的物件,也稱為receiver,可以註冊感興趣的事件,在事件發行者觸發乙個事件後,會自動執行這段**。 //
發布者(publiser)
public
class
publisher}}
//subscriber 訂閱者,無賴小明
public
class
mrming}
//subscriber 訂閱者,悲情人物小張
public
class
mrzhang}
class
story
}輸出為:
最新一期的《火影忍者》今天出版哦~
嘎嘎,我已經收到最新一期的《火影忍者》啦!!
如果童靴們,從上到下仔細看一邊的話,我想應該知道什麼是發布者,什麼是訂閱者了吧,那至於事件呢
我們先看這句
publisher.onpublish
+=new
publisher.publisheventhander(mrming.receive);
這就是小明向出版社訂閱他喜歡看的火影忍者,小張沒有訂閱所以小張沒有收到書,
我們再仔細看看這個賦值語句,是不是似曾相識過呢?是的就是我們在上一講,在講委託宣告的時候,簡直就是乙個眸子裡刻出來的嘛
委託賦值:
bugticketeventhandler mydelegate =
newbugticketeventhandler(mrzhang.buyticket);
所以,大家不要對事件有什麼好怕的,其實事件的本質就是乙個委託鏈,
我們看一下事件的宣告:
//宣告乙個出版的委託
public
delegate
void
publisheventhander
();//
在委託的機制下我們建立以個出版事件
public
event
publisheventhander
onpublish;
在我們使用事件的時候,必須要宣告對應的委託,而觸發事件,其實就是在使用委託鏈。
事件委託詳解
基本概念 事件委託,通俗地來講,就是把乙個元素響應事件 click keydown.的函式委託到另乙個元素 一般來講,會把乙個或者一組元素的事件委託到它的父層或者更外層元素上,真正繫結事件的是外層元素,當事件響應到需要繫結的元素上時,會通過事件冒泡機制從而觸發它的外層元素的繫結事件上,然後在外層元素...
C 委託和事件詳解
委託delegate delegate是c 中的一種型別,它實際上是乙個能夠持有對某個方法的引用的類。與其它的類不同,delegate類能夠擁有乙個簽名 signature 並且它 只能持有與它的簽名相匹配的方法的引用 它所實現的功能與c c 中的函式指標十分相似。它允許你傳遞乙個類a的方法m給另乙...
C 委託與事件詳解 三
protected void btnsearch click object sender,imageclickeventargs e 那他們到底表示什麼呢?在回答上面的問題之前,我們先搞懂 net framework的編碼規範 一 委託型別的名稱都應該以eventhandler結束。二 委託的原型定...