一、委托
1、什么是委托
通俗易懂的理解:委托是函数(方法)的容器,可以理解为表示函数(方法)的变量类型,用来储存、传递函数(方法)。委托的本质是一个类,用来定义函数(方法)的类型(返回值和参数的类型)。不同的函数(方法)必须对应和各自"格式"一致的委托。
形象比喻:int num; num 可以当作参数,在函数中进行传递,
那么:委托 就是函数的类型,此时函数被当作参数,可以在其他函数中当作参数进行传递。
因为函数本身存在常规变量的参数,所以当函数作为参数传递的时候,一定要让函数申明格式和委托的定义格式参数和返回值上面要一 一对应。
2、委托的定义
语法糖:访问修饰符 delegate 返回值 委托名(参数列表);
如: public delegate void DelFun(string name);
定义了一个访问修饰符为public,无返回值,参数类型为string, 名字为DelFun的委托。
如:public delegate int DelFun2(int num);
定义了一个访问修饰符为public,返回值为int,参数类型为int,名字为DelFun2的委托。
委托一般定义在namespace(命名空间)和class(类)语句块中。
记忆法则:函数申明前面,加一个关键字delegate 则就是委托的定义。
3、委托的使用
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public delegate void MyFun();
public delegate int MyFun2(int value);
// 委托常用在:
//1 作为类的成员
//2 作为函数的参数
class Test
{
// 作为类的成员
public MyFun fun;
public MyFun2 fun2;
// 委托作为函数的参数
public void TestFun(MyFun fun, MyFun2 fun2)
{
// 先处理一些别的逻辑 当这些逻辑处理完了,在执行传入的函数
// 比如:
int i = 1;
i *= 2;
i += 2;
// 执行传进来的回调函数
fun()