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