首页 > 编程语言 >C#中的Action和Func委托 – 通过示例进行解释

C#中的Action和Func委托 – 通过示例进行解释

时间:2023-07-08 09:12:02浏览次数:29  
标签:Console 委托 示例 C# int result Func Action

在 C# 中,称为委托的类型表示对具有特定签名的方法的引用。

开发人员使用委托来实现回调方法、处理事件以及执行需要稍后执行方法的任务。

C# 提供了各种委托,其中两个常用的委托是 Action 和 Func,它们都定义在 System 命名空间中。

在本教程中,您将了解 C# 中的 Action 和 Func 委托。

要下载本文的源代码,请访问此GitHub 存储库: /TobbyJay/ActionAndFuncDelegate。

让我们首先讨论 Action 委托并探索它的用法

(更|多优质内|容:java567 点 c0m)

 

C# 中的动作委托是什么?

Action 委托是一种预定义的委托类型,它封装了具有零个或多个不返回值的输入参数的方法。换句话说,一个 Action 委托代表一个返回 void 的方法。

考虑这个示例,演示在简单的控制台计算器应用程序中使用 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);

在此示例中,我们定义了一个名为 ActionCalculator 的 Action 委托。它采用两个整数参数并使用这些参数执行四个基本算术运算。然后,我们使用值 4 和 2 调用委托。

该应用程序在运行时产生以下输出:

 Addition result: 6
 Subtraction result: 2
 Multiplication result: 8
 Division result: 2

正如您所看到的,利用 Action 委托简化了将一个方法作为参数传递给另一个方法的过程。

C# 中的 Func 委托是什么?

Func 委托是另一种预定义的委托类型,它表示具有零个或多个返回值的输入参数的方法。与 Action 委托不同,Func 委托的返回类型可以是任何类型。

让我们考虑一个在简单的控制台计算器应用程序中使用 Func 委托的示例。

在这个例子中,我们定义了一个 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 类包含执行四种基本算术运算的方法。

接下来,我们创建四个 Func 委托,每个委托都指向计算器的方法之一:

 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 调用每个委托并将结果打印到控制台。

计算器应用程序在运行时显示以下输出:

 Addition result: 6
 Subtraction result: 2
 Multiplication result: 8
 Division result: 2

Func 委托提供了一种简单的方法来定义和使用方法,将方法作为参数传递并作为结果返回。

结论

总之,Action 和 Func 委托提供了一种将方法调用封装在委托对象内的方法。

当方法不返回值时,开发人员使用 Action 委托;当方法返回值时,开发人员使用 Func 委托。

(更|多优质内|容:java567 点 c0m)

标签:Console,委托,示例,C#,int,result,Func,Action
From: https://www.cnblogs.com/web-666/p/17536619.html

相关文章

  • css 文字横向滚动通知消息
    要在CSS中实现横向滚动的通知消息,你可以使用CSS的动画属性、溢出属性和滚动属性相结合。首先,创建一个包含通知消息的容器,并设置其溢出属性为隐藏。这将确保溢出容器的内容不可见。然后,在容器内部创建一个用于显示通知消息的子元素,并设置其显示为内联块元素。然后,为这个子元素设......
  • Rockchip RK3399 - Platform驱动
    Platfromdriver提供了配置/使能SoC音频接口的能力;Plaftrom驱动分为两个部分:snd_soc_platform_driver、snd_soc_dai_driver。snd_soc_platform_driver:负责管理音频数据,把音频数据通过DMA或其他操作传送至CPUDAI中;snd_soc_dai_driver:负责完成SoC一侧的DAI参数配置,同时也会通过......
  • Rockchip RK3399 - Codec驱动( Realtek ALC5651)
    Codecdriver提供了配置/使能Codec的能力,驱动代码位于sound/soc/codecs/rt5651.c文件。一、设备节点1.1设备节点rt5651我们在arch/arm64/boot/dts/rockchip/rk3399-evb.dts文件添加rt5651设备节点,该节点位于i2c1节点下:&i2c1{status="okay";i2c-scl-rising-time......
  • 请使用C++计算出2^2023与3^2023的和
    易知,这个和的数字是非常大的,大到longlong都装不下,这个时候如果使用longlong是无法进行运算的。欸!这会高精度算法(即大数运算)就开始发光发热了。以下是我看资料总结的一些歪瓜裂枣。对于一位高精度数字,用整数数组存储,数组每一个元素对应一位十进制数,由其下标顺序指明位序号......
  • 开源Cillium项目为容器提供强大的网络功能
    试验性的开源Cillium项目使用Linux内核的一项现有特性,为容器提供高速、强大的网络功能。一项名为Cilium的开源项目试图基于Linux内核中所用的技术,为容器提供一种新的网络方法。试验性的开源Cillium项目使用Linux内核的一项现有特性,为容器提供高速、强大的网络功能。网络功......
  • 开源Cillium项目为容器提供强大的网络功能
    试验性的开源Cillium项目使用Linux内核的一项现有特性,为容器提供高速、强大的网络功能。一项名为Cilium的开源项目试图基于Linux内核中所用的技术,为容器提供一种新的网络方法。试验性的开源Cillium项目使用Linux内核的一项现有特性,为容器提供高速、强大的网络功能。网络功......
  • 开源Cillium项目为容器提供强大的网络功能
    试验性的开源Cillium项目使用Linux内核的一项现有特性,为容器提供高速、强大的网络功能。一项名为Cilium的开源项目试图基于Linux内核中所用的技术,为容器提供一种新的网络方法。试验性的开源Cillium项目使用Linux内核的一项现有特性,为容器提供高速、强大的网络功能。网络功......
  • CF1817E Half-sum
    greedy把数分成两个集合\(A,B\),且\(A<B\)。令每个集合的数的个数分别是\(a,b\)。令\(A_1\dotsA_a,B_1\dotsB_b\)分别有序。定理\(1\)\(A\)集合合并的顺序一定是从大往小的,\(B\)集合是从小往大的。应该很好猜到,但是证明需要一点推导。大概可以局部到\(x,y,z,w\)......
  • R语言风险价值:ARIMA,GARCH,Delta-normal法滚动估计VaR(Value at Risk)和回测分析股票数据|
    全文链接:http://tecdat.cn/?p=24492最近我们被客户要求撰写关于风险价值的研究报告,包括一些图形和统计输出。此分析的目的是构建一个过程,以在给定时变波动性的情况下正确估计风险价值。风险价值被广泛用于衡量金融机构的市场风险。我们的时间序列数据包括1258天的股票收益介......
  • 在 Go gRPC 中传递额外参数
    GogRPC是一个高性能、开源的RPC框架,它支持通过ProtocolBuffers进行序列化和反序列化,提供了简单易用的API,并且可以跨语言通信。在实际开发中,我们有时需要在gRPC方法之间传递一些额外的参数,例如请求头信息、跟踪ID、取消信号等。本文将介绍在GogRPC中如何传递这些额外......