到设计模式,均为委托的使用
一、从委托说起
委托可类比 C 中的函数指针
委托中的多播 Combine(+=) 和 Remove(-=)
其中 Combine(Remove),将委托的调用列表连接(删除, 将生成一个新(委托)实例,不改变原始对象,类似于string.contact。委托实例与事件不同,事件改变原始对象
其中多播 常见于事件,以及观察者模式
二、Action委托(系统内定义):
Action 无返回值,无参数类型
Action<> 泛型(可定义参数,最多16个,无返回值):
三、Func<> 委托(系统内定义):
Func<> 需要一个返回值,参数个数为0 - 16 个
四、匿名方法到单一(主体)Lambda表达式:
当多个参数以及多条语句在函数体时,需要使用大括号以及return
五、事件:
事件关键字: event
六、观察者设计模式:
发布类: class P { public event Action publish; void call() { if(publish != null) publish(); } } 订阅类: Class O { P p = new P(); p.publish += order; void order() { //相应行为 } }
当调用
publish()
时,订阅的order会发生相对应的调用
七、 其中Func<>
常见于数据比较的函数的参数,自定义的复杂数据的比较