委托:
委托就是一个类:继承自System.MulticastDelegate,里面内置了几个方法
invoke :把方法包装成变量,invoke的时候自动执行方法
委托的意义:委托解耦,减少重复代码
异步多线程
多播委托 :一个变量保存多个方法,可以增减,Invoke时可以按顺序执行
+=为委托实例按顺序增加方法,形成方法链,Invoke时,按顺序依次执行
-=为委托实例按移除方法,从方法链的尾部开始匹配,遇到第一个完全吻合的, 移除且只移除一个,没有也不异常
多播委托是不能异步的,
多播委托带返回值,结果以最后的为准
发布者:一次动作导致的后续一系列动作的触发,直接调用别的实例,别的方法,不管是增/减顺序,都会使第一个不稳定
事件:是带event 关键字的委托的实例,event 可以限制变量被外部调用/直接赋值,子类也不能调用
委托和事件的区别与联系:
委托是个类:比如Student
事件是委托类型的一个实例 , 比如张三
事件是可以把一堆可变的动作/行为封装出去,交给第三方来指定
预定义一样,程序设计的时候,我们可以把程序分成两个部分,
一部分是固定的,直接写死;还有不固定的地方,通过一个事件去开放接口,外部可以随意扩展动作
框架:完成固定/通用部分,吧可变部分留出扩展点,支持自定义