C#中的Func委托和Action委托有什么区别?

委托是一种类型,表示对具有特定参数列表和返回类型的方法的引用。实例化委托时,我们可以将其实例与具有兼容签名和返回类型的任何方法相关联。我们可以通过委托实例调用(或调用)该方法。

功能代表

Func是System命名空间中包含的通用委托。它具有零个或多个输入参数和一个out参数。最后一个参数被视为out参数。该委托可以指向一个最多包含16个参数并返回值的方法。

下面是具有两个输入和一个输出参数的Func委托。

Func <字符串,字符串,字符串>追加;

示例

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类型委托与Func委托相同,除了Action委托不返回值。换句话说,可以将Action委托与具有void返回类型的方法一起使用。它最多可以包含1输入参数,最多可以包含16个输入参数,并且不包含任何输出参数。

下面是具有两个输入和一个输出参数的Func委托。

Func <字符串,字符串,>打印;

示例

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