很多人以為有了委託還要事件幹嘛,其實很重要,如果沒有了事件,那麼你的**觸發時機可能會被別人修改,造成巨大的漏洞。下面,我會簡略說明一下問題所在。
委託,宣告後,可以直接例項,例如:internal delegate void dothingdelegate(); 例項:internal dothingdelegate dothing;
這樣一來,別人都可以使用dothing+=或者-=乙個方法了。
事件,由於上面宣告了委託,例項乙個事件:internal event
dothingdelegate
dothing;同樣,別人都可以使用
dothing+=或者-=乙個方法了。
由此看來,有了委託,還要事件幹嘛,豈不是多此一舉、畫蛇添足、景上添花。
經過本人多次實驗,發現如果只用委託,那麼別人用你的**的時候,可以直接
呼叫你的dothing方法,他就可以隨時觸發這個委託了,萬一你的委託繫結了10個**,那麼因為乙個人的疏忽,會導致10個**都在執行,會出現很嚴重的問題,團體開發很不安全。
於是,如果例項化的是事件,那麼,我的**觸發時機,除了我任何人都控制不了,因為他們只可以+=和-=,根本無法呼叫
dothing方法。
c 委託 和 事件 的區別
據說這是乙個面試題。我剛開始學的時候不怎麼理解,只簡單的認為委託是可以將方法作為引數傳入另乙個方法中的,當你的引數需要乙個方法的時候就可以使用委託。委託是一種特殊的資料型別,事件是物件,本來沒有可比性,又偏偏喜歡這樣問。但是,反編譯之後會發現事件是私有型別的委託,並且有兩個方法,add,remove...
事件繫結和事件委託區別
靜態繫結,也是最直接的事件繫結 通過事件屬性,直接顯示的給元素繫結事件,例如 該方式缺點 當頁面多元素都要新增事件時,定義繁瑣。函式名稱定義改變,一次要修改兩個地方。動態繫結 關於事件監聽的適配 因為ie 有自己的事件監聽 attachevent 和detachevent 分別用於事件監聽 obtn...
C 中委託和事件的區別
大致來說,委託是乙個類,該類內部維護著乙個字段,指向乙個方法。事件可以被看作乙個委託型別的變數,通過事件註冊 取消多個委託或方法。本篇分別通過委託和事件執行多個方法,從中體會兩者的區別。通過委託執行方法 class program public class examplevoid print str...