博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中event和delegate的区别
阅读量:5289 次
发布时间:2019-06-14

本文共 362 字,大约阅读时间需要 1 分钟。

event是一种特殊签名格式的delegate,event的定义必须在类内,delegate可以脱离类的存在。
event的引发是通过调用委托实现的,而委托不仅仅用来实现事件的引发。
通过加入event关键字,在编译的时候编译器会自动针对事件生成一个私有的字段(与此事件相关的委托),以及add_xxx和remove_xxx两个访问器方法。
虽然相关的操作通过delegate也能实现,但使用event更多是为了封装,event通常只能被申明的类访问,外部类对event只能使用+=或者-=,调用都不行。
如:
可以直接被赋值,不利于封装。
 
当然在声明的类内,event可以做delegate一切可以做的事情

赋值不会报错。

 

转载于:https://www.cnblogs.com/cangxw/p/8488264.html

你可能感兴趣的文章
String
查看>>
easydict的使用方法
查看>>
第一册:lesson seventy nine.
查看>>
查看webservice服务下的所有方法和参数类型
查看>>
GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例
查看>>
团队作业
查看>>
数据持久化时的小bug
查看>>
mysql中key 、primary key 、unique key 与index区别
查看>>
bzoj2257
查看>>
Linux查看文件编码格式及文件编码转换<转>
查看>>
Leetcode: Find Leaves of Binary Tree
查看>>
SpringBoot13 利用mybatis-plus自动生成entity、dao、service、controller
查看>>
Vue 模板解释
查看>>
http://www.bootcss.com/
查看>>
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
maven内置属性
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>