委托和事件的區別詳解


委托的本質,是一個類,而事件,是一個委托類型的私有變量加上兩個公有方法(事件的+=和-=),這是本質區別。
打個比方,string 也是一個類,而string s = "a",這個s是string類型的一個變量(略有不恰當,為了方便直觀理解)。
public delegate void myDel();相當於你創建了一個myDel的類,所以委托可以在任何地方創建,類需要實例化,所以委托需要實例化,要myDel m = ……;
申明一個事件 public event myDel myEvent;
事件myEvent是一個myDel類型的一個變量,因為是變量,所以事件只能在類里面申明,不需要實例化,有點類似與上面的那個m,當然不全是,他還有兩個方法(+=,-=),調用一次+=方法,myEvent += MethodA;其實是把MethodA方法,封裝成一個myDel類型的委托對象,然后把這個對象的引用賦值給這個myEvent變量。如果多次調用+=,就是多個方法封裝成了多個myDel委托對象,然后這些委托對象放在一個列表里面,然后myEvent就指向這個列表,觸發的時候,就是調用這個列表里面的所有委托的Invoke方法。

 

 

https://blog.csdn.net/weixin_34308389/article/details/86174987?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM