C#中的Action和Func委托 – 通過示例進(jìn)行解釋
開發(fā)人員使用委托來實(shí)現(xiàn)回調(diào)方法、處理事件以及執(zhí)行需要稍后執(zhí)行方法的任務(wù)。
C# 提供了各種委托,其中兩個(gè)常用的委托是 Action 和 Func,它們都定義在 System 命名空間中。
在本教程中,您將了解 C# 中的 Action 和 Func 委托。
要下載本文的源代碼,請?jiān)L問此GitHub 存儲庫: /TobbyJay/ActionAndFuncDelegate。
讓我們首先討論 Action 委托并探索它的用法
(更|多優(yōu)質(zhì)內(nèi)|容:java567 點(diǎn) c0m)
C# 中的動作委托是什么?
Action 委托是一種預(yù)定義的委托類型,它封裝了具有零個(gè)或多個(gè)不返回值的輸入?yún)?shù)的方法。換句話說,一個(gè) Action 委托代表一個(gè)返回 void 的方法。
考慮這個(gè)示例,演示在簡單的控制臺計(jì)算器應(yīng)用程序中使用 Action 委托:
?Action<int, int> ActionCalculator = (a, b) =>
?{
? ? ?Console.WriteLine($"Addition result: {a + b}");
? ? ?Console.WriteLine($"Subtraction result: {a - b}");
? ? ?Console.WriteLine($"Multiplication result: {a * b}");
? ? ?Console.WriteLine($"Division result: {a / b}");
?};
?
?ActionCalculator(4, 2);
在此示例中,我們定義了一個(gè)名為 ActionCalculator 的 Action 委托。它采用兩個(gè)整數(shù)參數(shù)并使用這些參數(shù)執(zhí)行四個(gè)基本算術(shù)運(yùn)算。然后,我們使用值 4 和 2 調(diào)用委托。
該應(yīng)用程序在運(yùn)行時(shí)產(chǎn)生以下輸出:
?Addition result: 6
?Subtraction result: 2
?Multiplication result: 8
?Division result: 2
正如您所看到的,利用 Action 委托簡化了將一個(gè)方法作為參數(shù)傳遞給另一個(gè)方法的過程。
C# 中的 Func 委托是什么?
Func 委托是另一種預(yù)定義的委托類型,它表示具有零個(gè)或多個(gè)返回值的輸入?yún)?shù)的方法。與 Action 委托不同,F(xiàn)unc 委托的返回類型可以是任何類型。
讓我們考慮一個(gè)在簡單的控制臺計(jì)算器應(yīng)用程序中使用 Func 委托的示例。
在這個(gè)例子中,我們定義了一個(gè) Calculator 類:
?public class Calculator
?{
? ? ?public int Add(int a, int b) => a + b;
? ? ?public int Subtract(int a, int b) => a - b;
? ? ?public int Multiply(int a, int b) => a * b;
? ? ?public int Divide(int a, int b) => a / b;
?}
Calculator 類包含執(zhí)行四種基本算術(shù)運(yùn)算的方法。
接下來,我們創(chuàng)建四個(gè) Func 委托,每個(gè)委托都指向計(jì)算器的方法之一:
?var FuncCalculator = new Calculator();
?
?Func<int, int, int> add = FuncCalculator.Add;
?Func<int, int, int> subtract = FuncCalculator.Subtract;
?Func<int, int, int> multiply = FuncCalculator.Multiply;
?Func<int, int, int> divide = FuncCalculator.Divide;
?
?Console.WriteLine($"Addition result: {add(4, 2)}");
?Console.WriteLine($"Subtraction result: {subtract(4, 2)}");
?Console.WriteLine($"Multiplication result: {multiply(4, 2)}");
?Console.WriteLine($"Division result: {divide(4, 2)}");
最后,我們使用值 4 和 2 調(diào)用每個(gè)委托并將結(jié)果打印到控制臺。
計(jì)算器應(yīng)用程序在運(yùn)行時(shí)顯示以下輸出:
?Addition result: 6
?Subtraction result: 2
?Multiplication result: 8
?Division result: 2
Func 委托提供了一種簡單的方法來定義和使用方法,將方法作為參數(shù)傳遞并作為結(jié)果返回。
結(jié)論
總之,Action 和 Func 委托提供了一種將方法調(diào)用封裝在委托對象內(nèi)的方法。
當(dāng)方法不返回值時(shí),開發(fā)人員使用 Action 委托;當(dāng)方法返回值時(shí),開發(fā)人員使用 Func 委托。