c# 委托和事件
委托
委托是一种可以承载方法的复杂数据类型
需要我们自定义
delegate 返回类型 委托类型名(参数列表)
委托类型名 委托变量名=new 委托类型名(方法名)
调用: 委托变量名(); 委托变量名.Invoke();
委托的本质
就是方法引用的列表,有先后顺序,一旦调用会把列表中所有的方法执行完
委托的注册
委托名+=方法名//就可以将多个方法注册进委托变量中
委托的注销
委托名-=方法名//可以将方法从委托列表中移除
委托变量一旦重新赋值,以前引用的方法全部丢失
可以使用委托变量=null全部清空方法列表
如果注册了多种方法在委托变量中则先注册的先执行
事件:
委托变量如果公开出去,很不安全,外部可以随意调用
所以取消public,封闭它,我们可以自己书写两个方法,供外部注册与注销,委托调用在
子方法里调用,这样封装委托变量可以使它更安全,这个就叫做事件
1.外部不能随便调用,只能注册和注销
2.只能自己去调用自己的委托
C#为了方便我们封装委托变量,推出一个特性event事件
在委托变量前用event修饰这个变量,这个委托变量就变成了事件
这样的话,这个变量,就算你公开出去也没关系了
因为,外部只能对这个变量进行注册和注销,只能内部进行触发