📜  c# 将函数作为输入委托传递 - C# (1)

📅  最后修改于: 2023-12-03 14:39:46.410000             🧑  作者: Mango

C# 将函数作为输入委托传递

C#中有一种特殊的数据类型叫做委托,委托可以看做是一个函数指针,它可以指向一个或多个函数。在C#中,可以将函数作为输入参数传递到委托中,也就是将函数委托给委托类型的变量。这种方式可以让代码更加灵活,方便代码的复用和维护。

委托类型

在C#中,委托类型可以看做是一个数据类型,用来存储函数指针的地址。委托类型的定义格式如下:

delegate 返回类型 委托名称(参数列表);

其中,返回类型即为函数的返回类型,委托名称即为委托类型的名称,参数列表即为函数的参数列表。

例如,定义一个委托类型来表示一个接受两个整数参数,返回一个整数的函数:

delegate int OperateDelegate(int a, int b);
委托变量

定义好委托类型后,就可以使用该委托类型定义一个委托变量,用来指向相应的函数。委托变量的定义格式如下:

委托类型 委托变量名 = new 委托类型(函数名);

其中,委托类型即为定义好的委托类型名称,委托变量名即为委托变量的名称,函数名即为该委托变量要指向的函数名。

例如,定义一个委托变量来指向一个名为Add的函数:

OperateDelegate addDele = new OperateDelegate(Add);
委托作为输入参数

使用委托可以让函数更具有灵活性,可以将函数作为输入参数传递到委托中。在函数定义中,将委托类型作为函数的一个输入参数即可。

例如,定义一个函数来计算两个整数的和:

int Add(int a, int b) {
    return a + b;
}

定义一个函数来计算两个整数的差:

int Substract(int a, int b) {
    return a - b;
}

定义一个函数来进行两个整数的操作,操作类型通过输入的委托类型来指定:

int Operation(int a, int b, OperateDelegate operate)
{
    return operate(a, b);
}

调用Operation函数时,传入不同的委托变量即可实现不同的操作。例如:

int a = 10;
int b = 20;

int add = Operation(a, b, addDele);
int substract = Operation(a, b, new OperateDelegate(Substract));
总结

本文介绍了如何将函数作为输入委托传递。使用委托可以让代码更加灵活,可以实现代码的复用和维护。在定义委托类型时,需要定义委托类型的名称、返回类型和参数列表。使用委托类型定义委托变量,传入函数名即可实现函数指针的功能。在函数定义中,将委托类型作为一个输入参数,传入不同的委托变量即可调用不同的函数。