委托
一、什么是委托
委托是 函数(方法)的容器 可以理解为表示函数(方法)的变量类型,用来 存储、传递函数(方法) 委托的本质是一个类,用来定义函数(方法)的类型(返回值和参数的类型) 不同的 函数(方法)必须对应和各自"格式"一致的委托
二、基本语法
- 关键字:delegate
- 语法:访问修饰符 delegate 返回值 委托名(参数列表);
- 写在哪里? 可以申明在 namespace 和 class 语句块中 更多的写在 namespace 中
- 简单记忆委托语法 就是 函数申明语法前面加一个 delegate 关键字
三、自定义委托函数
注意: private 其它命名空间就不能用了,一般使用 public 访问修饰默认不写 为 public 在别的命名空间中也能使用
1 | //声明了一个可以用了来存储无参无返回值的委托 |
四、使用定义好的委托
注意:
- 委托是 专门用来装载 函数的 容器
- 委托的申明是不能重名的
- 委托可以存储多个函数
1 | //---存储---// |
五、系统提供给我们的委托
- 引用命名空间 using System;
- 系统提供的委托
| 委托类型 | 意义 |
|---|---|
| Acion | 无参无返回值的委托 |
| Func<> | 有返回值的的委托 |
| Action<> | n 个参数的委托(最多 16 个) |
| Func<> | 有返回值的的委托,n 个参数的委托(最多 16 个) |
六、委托的多个返回值
问题:当拥有多个返回值的委托容器存储多个函数时,如何获取每一个执行函数后的返回值? 
解决方法:委托容器中存在 GetInvocationList()可以返回一个委托数组,在通过迭代器遍历获取到每一个函数 