一句话:事件和属性有很多相似点。
属性是封装了一个字段,在属性中对字段的存取进行封装和验证。
而事件是封装了一个私有委托实例,并幕后提供了事件处理程序的注册、注销。
1. 源代码:声明一个委托类型后,用该委托类型声明一个事件MyEvent
属性是封装了一个字段,在属性中对字段的存取进行封装和验证。
而事件是封装了一个私有委托实例,并幕后提供了事件处理程序的注册、注销。
1. 源代码:声明一个委托类型后,用该委托类型声明一个事件MyEvent
2. 编译后,通过Reflector查看。发觉多出一个私有委托变量MyEvent,它是事件MyEvent自动生成的。
3. 查看编译后的MyEvent事件,除了多出一个委托变量,还多出两个方法(添加和删除)。图中红框内就是1中一句代码生成的幕后逻辑,它包括了生成一个私有委托变量,和对这个委托变量进行操作(赋值或取消值)