C#内置委托

C#类库内置委托类型(泛型委托):Func委托、Action委托
适用前提:
①using System;
②都最多弹性 16 个参数。
Func委托 Action委托 根本区别
①Action必定指向一个无返回值类型的,参数列表可有可无。
②Func必定指向一个有返回值类型的,参数列表可有可无。
存在意义:
本质上还是delegate(委托类型),省去了【自定义委托类型声明】的过程,足够日常使用√
类可以声明变量;类可以创建实例;类可以作为方法的参数类型。

Action委托

●只能够指向(必须指向)一个返回值为空的目标方法
●可以指向 有参数列表 的方法
●Action可以输入特化、具体化的类型
image.png

  1. //声明
  2. Action<string,float> action;
  3. //实例化
  4. action = new Action<string,float>(方法名);
  5. //使用
  6. action("string字段",float字段);

自我实现:

image.pngimage.png

Func委托

返回值类型放在所有参数的最后一位。image.png

自我实现:

image.pngimage.png

委托分析

委托的缺点:
●多播委托很容易人为失误,导致委托封装的所有方法重置。(提高维护成本,降低安全性)

这个缺点也是为什么,之后使用事件作为委托字段的包装器 原因之一因为事件只允许+=或者-=符号,而不是赋值符号

●过度使用委托还会导致内存泄漏:Memory Leak;滥用还会导致可读性下降
image.png
●刘老师总结:

image.png模板方法 与 回调方法

image.png
模板方法的参数填补,导致一定是有返回值类型。Func委托类型。

模板方法

具体案例:
image.png
简要游戏编程案例分析:最大击杀数、最快到达等进行比较判定,分别显示达成玩家。

回调 Callback 方法

回调:随时可以调用,看自己想不想(实际需求)。通过逻辑动态的去选择,后续将被调用的方法。
具体案例:

需要把委托类型的参数传递到方法中。

被传进方法里的委托类型的参数,内部就会封装一个被回调的方法。

image.png
简要游戏编程案例分析:多个玩家,但仅有一个玩家胜利,显示MVP称号的功能。