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

更新于:2020年8月8日

2K+浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告