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
廣告