C#中Func委托和Action委托的区别是什么?
委托是一种代表具有特定参数列表和返回类型的方法的引用类型。当我们实例化一个委托时,我们可以将其实例与任何具有兼容签名和返回类型的方法关联。我们可以通过委托实例来调用(或执行)该方法。
Func委托
Func是一个包含在System命名空间中的泛型委托。它具有零个或多个输入参数和一个输出参数。最后一个参数被视为输出参数。此委托可以指向最多接受16个参数并返回一个值的方法。
下面是具有两个输入参数和一个输出参数的Func委托。
Func<string, string, string > Append;
示例
using System; namespace DemoApplication { class Program { static void Main(string[] args) { Func<string, string, string> func = Append; string fullName = func("Michael", "Jackson"); Console.WriteLine(fullName); Console.ReadLine(); } static string Append(string firstName, string lastName) { return firstName + lastName; } } }
输出
MichaelJackson
Action委托
Action是在System命名空间中定义的委托类型。Action类型委托与Func委托相同,只是Action委托不返回值。换句话说,Action委托可以与具有void返回类型的方法一起使用。它可以包含最少1个和最多16个输入参数,并且不包含任何输出参数。
下面是具有两个输入参数和一个输出参数的Func委托。
Func<string, string,> Print;
示例
using System; namespace DemoApplication { class Program { static void Main(string[] args) { Action func = AppendPrint; func("Michael", "Jackson"); Console.ReadLine(); } static void AppendPrint(string firstName, string lastName) { string fullName = firstName + lastName; Console.WriteLine($"{fullName}"); } } }
输出
上述代码的输出是
MichaelJackson
广告