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

csharpserver side programmingprogramming更新于 2025/10/2 3:37:17

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

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

相关文章