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