如果要閱讀這篇文章,建議先讀我的文章委託,如果你已了解委託,那麼忽略這段話即可。
public
delegate
void
playhandle()
;public
playhandel playevent;
第一段**:
第一行宣告了乙個委託型別playhandle
第二行宣告了乙個委託變數playevent
之後我們給playevent賦值即可間接呼叫繫結的方法
public
delegate
void
playhandle
(object sender,
eventargs e)
;public
event
playhandel playevent;
第二段**:
與第一段很相似,第一行仍是宣告了乙個委託型別playhandle,不過上面是無參的,我們這裡有兩個引數。
為什麼是這兩個引數呢?
第乙個引數是object型別,作為事件的傳送者。第二個引數是事件的引數型別,就是把引數也封裝成類,以後不管有幾個引數,0個,2個,8個,我們都用這乙個引數代表這些引數。這是乙個規定,方便事件的使用。
第二行呢,在原先的基礎上加了event關鍵字,這就建立好了乙個事件。
有無event的區別是什麼呢?
為了更好的理解,我們看看下面的原碼,需求是張老師讓機械人代打籃球
此時有event修飾,我們不可以直接呼叫playevent,如果呼叫,會報這樣的錯。
如果沒有event,那麼這個錯誤不會出現,你可以任意的呼叫,這樣便不合理。
參照委託理解事件
namespace eventdemo public static void listen bark 1 純委託型別版 事件 不安全 class dog public delebark onbark dog的委託型別成員 事件 2 私有委託型別的 事件 安全可控 onbark定義為private 的...
深入理解事件捕獲冒泡
看到乙個的日誌,發現自己對事件冒泡捕獲並沒有完全理解透。借用一下這個例子和大家 一下 假設有指令碼片段如下 document.body.addeventlistener mousedown function e false document.body.addevnetlistener mousedo...
深入理解事件冒泡和事件捕捉
前幾天做到阿里的前端面試題,其中的一道選擇題考查的知識點就是事件的傳播,當時做題的時候不確定答案所以決定總結下這方面的知識點。首先事件傳播分為三個階段 第一階段 發生在目標處理程式呼叫之前,稱為捕獲階段 第二階段 目標物件本身的事件處理程式呼叫 第三階段 發生在目標處理程式呼叫之後,稱為冒泡階段 回...