天天看點

C#事件和委托差別

很多人以為有了委托還要事件幹嘛,其實很重要,如果沒有了事件,那麼你的代碼觸發時機可能會被别人修改,造成巨大的漏洞。下面,我會簡略說明一下問題所在。

委托,聲明後,可以直接執行個體,例如:internal delegate void DoThingDelegate();     執行個體:internal DoThingDelegate DoThing;

這樣一來,别人都可以使用DoThing+=或者-=一個方法了。

事件,由于上面聲明了委托,執行個體一個事件:internal event  DoThingDelegate DoThing;同樣,别人都可以使用DoThing+=或者-=一個方法了。

由此看來,有了委托,還要事件幹嘛,豈不是多此一舉、畫蛇添足、景上添花。

經過本人多次實驗,發現如果隻用委托,那麼别人用你的代碼的時候,可以直接

調用你的DoThing方法,他就可以随時觸發這個委托了,萬一你的委托綁定了10個代碼,那麼因為一個人的疏忽,會導緻10個代碼都在執行,會出現很嚴重的問題,團體開發很不安全。

于是,如果執行個體化的是事件,那麼,我的代碼觸發時機,除了我任何人都控制不了,因為他們隻可以+=和-=,根本無法調用  DoThing方法。