深入c# Func委托的详解
什么是Func委托
Func委托是一个通用泛型委托,可以接受1至16个输入参数,并返回一个返回值。因为Func是一个泛型委托,所以可以用来创建适合各种输入和返回类型的委托。
Func是一个系统内建的委托类型,在System命名空间中定义,其语法如下:
public delegate TResult Func<in T, out TResult>(T arg);
public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);
// 省略其余定义
其中T是输入参数的类型,TResult是返回值的类型。由于Func是一个泛型委托,所以可以通过多种方式指定输入和返回类型。
如何使用Func委托
下面给出两个示例,说明如何使用Func委托:
示例1:使用Func委托计算两个数字的和
using System;
public class Program
{
public static void Main()
{
// 定义委托变量,声明输入和返回类型
Func<int, int, int> addFunc = (a, b) => a + b;
// 调用委托变量,传入两个整数,返回它们的和
int result = addFunc(1, 2);
Console.WriteLine("The result is " + result);
}
}
在上面的示例中,我们定义了一个input类型为int,output类型也为int的Func委托,使用Lambda表达式实现委托所需的逻辑。接着通过委托变量addFunc调用该委托,将两个整数作为参数传入,最终得到它们的和。
示例2:使用Func委托将字符串数组转化为大写
using System;
using System.Linq;
public class Program
{
public static void Main()
{
// 定义委托变量,声明输入和返回类型
Func<string[], string[]> arrayToUpper = arr => arr.Select(s => s.ToUpper()).ToArray();
// 定义字符串数组,将其转化为大写
string[] array = new string[] { "apple", "banana", "cherry" };
string[] result = arrayToUpper(array);
// 输出结果
Console.WriteLine(string.Join(", ", result));
}
}
在上面的示例中,我们定义了一个input类型为string[],output类型也为string[]的Func委托,使用Lambda表达式实现委托所需的逻辑。接着定义一个字符串数组array,并通过委托变量arrayToUpper将其转化为大写。最后通过Console.WriteLine方法将结果输出。
总结
Func委托是一个灵活的委托类型,可以接受1至16个输入参数,并返回一个返回值。它可以用来创建适合各种输入和返回类型的委托。使用Func委托的过程中,需要定义委托变量、声明输入和返回类型,然后使用Lambda表达式实现委托所需的逻辑。最后通过委托变量调用委托,传入参数获取返回值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入c# Func委托的详解 - Python技术站