(原)以最直接的方式講解委託 事件2

2021-09-11 16:52:56 字數 923 閱讀 1374

delegate

void

dlgt

(string s)

;//定義乙個輸入string無返回值的委託

class dlmng

}class

program

}

這樣定義有個壞處,dl1這個變數對外是公開的,影響類的封裝和穩健,我們可以用event來對委託變數進行封裝,成為乙個「事件」,並給dlgt換個容易理解的事件名字,並把委託宣告改乙個易理解的事件處理handler名字,然後**變動比較大

public

delegate

void

numchangedhandler

(string s)

;//定義乙個委託numchangedhandler

class dlmng

}}class

program

}

綜合來說,給乙個類定義事件處理程式及使用包括這麼6步:

委託定義的返回值通常都為 void

儘管上面的範例很好地完成了我們想要完成的工作,但是我們不僅疑惑:為什麼.net framework 中的事件模型和上面的不同?為什麼有很多的eventargs 引數?

在回答上面的問題之前,我們先搞懂 .net framework 的編碼規範:

委託型別的名稱都應該以 eventhandler 結束。

委託的原型定義:有乙個void 返回值,並接受兩個輸入引數:乙個object 型別,乙個eventargs 型別(或繼承自eventargs)。

事件的命名為委託去掉 eventhandler 之後剩餘的部分。

繼承自 eventargs 的型別應該以eventargs 結尾。

委託事件的實際運用

1 事件在try catch中的運用 在多層架構中try catch事件類似於冒泡,如果不對 做任何處理,無論哪一層發生異常,都會在最頂層的ul層顯示出異常資訊。所以個人觀點,異常的捕獲工作最好在ul層。這樣所有層級報的異常都可以 獲到,因為錯誤會像氣泡一樣最終會在顯示層暴露出來。在每次設計到資料庫...

委託 事件的個人理解

事件 乙個用event進行了封裝的委託型別的變數,使得在進行註冊的時候只能使用 或者 需要乙個觸發者和乙個執行者,類似於observer模式中的subject和observer 當乙個物件的狀態發生改變時,所有依賴於他的物件都會得到通知並被自動更新。觸發者 對委託 事件進行定義,並觸發事件的執行。s...

理解jquery on 委託事件的機制

前兩天做了乙個點選任意位置,都能關閉選單的功能,因為選單裡面的每乙個a,的點選事件都是用on繫結的。所以在阻止冒泡的時候不管用,今天特意來理解一下on的機制 on 是委託事件,利用的就是冒泡原理 selector on event,selector handler selector 如果為空,表示的...