C#内置委托
C#类库内置委托类型(泛型委托):Func委托、Action委托
适用前提:
①using System;
②都最多弹性 16 个参数。
Func委托 与 Action委托 根本区别:
①Action必定指向一个无返回值类型的,参数列表可有可无。
②Func必定指向一个有返回值类型的,参数列表可有可无。
存在意义:
本质上还是delegate(委托类型),省去了【自定义委托类型声明】的过程,足够日常使用√
类可以声明变量;类可以创建实例;类可以作为方法的参数类型。
Action委托
●只能够指向(必须指向)一个返回值为空的目标方法
●可以指向 有参数列表 的方法
●Action
//声明
Action<string,float> action;
//实例化
action = new Action<string,float>(方法名);
//使用
action("string字段",float字段);
自我实现:
Func委托
自我实现:
委托分析
委托的缺点:
●多播委托很容易人为失误,导致委托封装的所有方法重置。(提高维护成本,降低安全性)
这个缺点也是为什么,之后使用事件作为委托字段的包装器 原因之一因为事件只允许+=或者-=符号,而不是赋值符号
●过度使用委托还会导致内存泄漏:Memory Leak;滥用还会导致可读性下降
●刘老师总结:
模板方法 与 回调方法
模板方法的参数填补,导致一定是有返回值类型。Func委托类型。
模板方法
具体案例:
简要游戏编程案例分析:最大击杀数、最快到达等进行比较判定,分别显示达成玩家。
回调 Callback 方法
回调:随时可以调用,看自己想不想(实际需求)。通过逻辑动态的去选择,后续将被调用的方法。
具体案例:
需要把委托类型的参数传递到方法中。
被传进方法里的委托类型的参数,内部就会封装一个被回调的方法。
简要游戏编程案例分析:多个玩家,但仅有一个玩家胜利,显示MVP称号的功能。