C#中event和delegate的區別


event是一種特殊簽名格式的delegate,event的定義必須在類內,delegate可以脫離類的存在。
event的引發是通過調用委托實現的,而委托不僅僅用來實現事件的引發。
通過加入event關鍵字,在編譯的時候編譯器會自動針對事件生成一個私有的字段(與此事件相關的委托),以及add_xxx和remove_xxx兩個訪問器方法。
雖然相關的操作通過delegate也能實現,但使用event更多是為了封裝,event通常只能被申明的類訪問,外部類對event只能使用+=或者-=,調用都不行。
如:
可以直接被賦值,不利於封裝。
 
當然在聲明的類內,event可以做delegate一切可以做的事情

賦值不會報錯。

 


免責聲明!

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



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