學習C 簡單理解事件

2021-10-05 11:37:38 字數 1284 閱讀 6200

如果要閱讀這篇文章,建議先讀我的文章委託,如果你已了解委託,那麼忽略這段話即可。

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...

深入理解事件冒泡和事件捕捉

前幾天做到阿里的前端面試題,其中的一道選擇題考查的知識點就是事件的傳播,當時做題的時候不確定答案所以決定總結下這方面的知識點。首先事件傳播分為三個階段 第一階段 發生在目標處理程式呼叫之前,稱為捕獲階段 第二階段 目標物件本身的事件處理程式呼叫 第三階段 發生在目標處理程式呼叫之後,稱為冒泡階段 回...