C# 把函数作为参数传入另一个函数
如果我们需要设计一个Compute函数,它是用来计算的,参数类型依次是int、函数、int
比如,
Compute(2, Add, 3)应该返回5,因为我们传入的是一个做加法的函数
Compute(2, Mul, 3)应该返回6,因为我们传入的是一个做乘法的函数
我们该如何写这个Compute函数呢
可以使用Func<>
像这样:
public static int Compute(int a, Func<int, int, int> func, int b)
{
return func(a, b);
}
这里的第二个参数类型是Func<int, int, int>,就表明第二参数可以传一个函数,这个函数需要接收两个int型参数,返回一个int型的参数
然后再准备两个函数用来测试
public static int Add(int a, int b)
{
return a + b;
}
public static int Mul(int a, int b)
{
return a * b;
}
主函数中:
static void Main(string[] args)
{
Console.WriteLine(Compute(2, Add, 3));
Console.WriteLine(Compute(2, Mul, 3));
}
运行结果
5
6
完整代码是这样的
using System;
namespace Test
{
class Program
{
public static int Compute(int a, Func<int, int, int> func, int b)
{
return func(a, b);
}
public static int Add(int a, int b)
{
return a + b;
}
public static int Mul(int a, int b)
{
return a * b;
}
static void Main(string[] args)
{
Console.WriteLine(Compute(2, Add, 3));
Console.WriteLine(Compute(2, Mul, 3));
}
}
}