委托是C#语言很重要的一个知识点,在后续的编码中会大量使用到。
委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。
委托是事件的基础,匿名方法,Lambda表达式都是建立在委托的基础之上的。
- 说白了委托就是可以把方法当做(方法的)参数来传递。
委托是引用类型,在使用委托时首先要定义–>声明–>实例化–>作为参数传递给方法–>使用委托。
委托语法:
访问修饰符 delegate 返回值类型 委托名称(参数列表);
public delegate void MyDelegate(int a, int b);
委托声明的关键字:delegate。
委托声明的位置可以在类外,也可以在类内。
声明的委托要和绑定的方法的“签名”保持一直;(签名指的是
方法的返回值类型,以及参数列表的类型)
加减乘除事例:
/// <summary>
/// 声明一个委托
/// </summary>
public delegate void CalcDelegate(int numA, int numB);
public class Calc : MonoBehaviour
{
private void Start()
{
int numA = 10;
int numB = 2;
// 传入和委托类型相同签名的方法
MyCalc(numA, numB, JiaFa);
}
/// <summary>
/// 把方法当做(方法的)参数来传递,a和b是int 类型,而方法的类型就是委托类型,
/// </summary>
private void MyCalc(int a,int b,CalcDelegate calcDel)
{
calcDel(a, b);
}
private void JiaFa(int a, int b)
{
Debug.Log(string.Format("{0} + {1} = {2}", a, b, a + b));
}
private void JianFa(int a, int b)
{
Debug.Log(string.Format("{0} - {1} = {2}", a, b, a - b));
}
private void ChengFa(int a, int b)
{
Debug.Log(string.Format("{0} * {1} = {2}", a, b, a * b));
}
private void ChuFa(int a, int b)
{
Debug.Log(string.Format("{0} / {1} = {2}", a, b, a / b));
}
}