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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP