事件与委托:
使用委托变量,为什么使用事件属性(同字段与属性的区别)
外部使用委托时会出现的问题:
1 由于可能同一个方法可能会重复添加,但最后的添加不是+=而是写成了=,就表示只赋值了最后一个,
会出现委托链的问题 ,外部只能用+=为委托赋值。
2 有可能不通过事件方法而直接调用委托,只能通过底层的事件方法调用委托,外部不能调用委托。
综上:委托只能在内部调用,不能在外部调用,在外部赋值时只能用+=
属性中的只写属性正好满足要求。
故增加event关键字将其定义为类的委托类型的事件变量,(正如属性对字段的保护一样),这样,
就能利用事件(实质是属性,更实质是方法,也就是事件方法)保护委托,事件有两个方法add和remove方法,
分别通过+=和-=为私有变量委托添加和移除注册的方法,事件也是一个委托类型的变量,把事件当委托变量使用
事件概念:
事件就是一个特殊的委托类型的变量(前有event修饰),是一个私有的委托变量加上两个add和remove方法。公共的事件属性是对私有委托字段的封装,外部只能对事件通过+=和-=为委托字段添加和移除方法。就像以前学的属性对字段的封装一样。
委托和事件的区别:
事件是一个私有的委托变量,加上两个方法:add和remove方法,在外界通过+=和-=进行赋值操作
事件机制可以避免在其他无关方法中提供委托调用功能,造成委托盗用。
委托是类型,事件是委托类型的变量,