C# 中 Func 委托和 Action 委托的区别17 Mar 2025 | 5 分钟阅读 在本文中,我们将讨论 C# 中 Func 委托 和 Action 委托 之间的区别。在理解区别之前,让我们先了解每个术语。在 C# 中,使用特定签名定义的方法由一种称为委托的类型来引用。 什么是委托?委托 是一种值类型,当方法在部署前未知时,它使得调用具有相似签名的其他方法成为可能。“delegate” 关键字用于创建委托,这些委托是充当回调方法的函数。委托可以是内置的,也可以嵌套在类中。主要区别在于前者应用于返回值的委托,而后者用于没有返回值的委托。程序可以使用委托来实现回调方法、处理事件以及执行需要稍后执行方法的任务。C# 支持各种形式的委托,而 Action 和 Func 是 System 命名空间中最流行的两种。 什么是 C# 中的 Action 委托?Action 委托 是一个正式的系统委托,它是一种通用委托类型。反过来,它正确地定义了一个通用委托,而不是定义一个自定义委托,从而提高了代码的可读性和优化性。它是 System 命名空间的一部分。它也可以有最少 1 个参数,最多 16 个参数作为输入参数。Action 委托最常见的用途是将其传递给不需要返回值的方法。简而言之,Action 委托用于返回类型为 void 的方法。它也可能包含相同类型的参数以及不同类型的参数。 语法它具有以下语法: 在这里,Param1 和 Param2 是输入参数的约束,arg1 和 arg2 是由 Action 委托封装的方法的形式参数。Action 委托是一种预定义的委托类型,它支持具有零个或多个参数且没有输出值的任何方法。 示例让我们举一个例子来说明 C# 中的 action 委托。 输出 23 说明在上面的程序中,我们封装了 action 委托,这将提高程序的可读性并减小代码大小。这里,'action' 委托有两个参数:'error' 和 'completion'。Action 委托最终将通过我们直接分配给它的方法来调用 paramFun 函数。 什么是 C# 中的 Func 委托?Func 是 System 命名空间 中一种特殊的委托,在 C# 中常用。它充当定义可以接受一个输入参数或在没有参数的情况下返回值的通用工具。通过使用 Func,无需声明自定义委托,从而简化了项目并提高了效率。 顾名思义,Func 专为生成返回值的方法而设计,使其成为表示此类方法的合适委托。此功能简化了编码过程,并促进了更清晰、更简洁的代码。由于 Func 是一个具有通用功能的委托,因此它属于系统命名空间。它可以包含最少 0 个、最多 16 个参数,并且只能显示 1 个输出参数。Func 委托的最后一个参数是输出类型,它被视为返回类型并与结果相关。它也可能包含相同类型或不同类型的参数。 语法它具有以下语法。 示例让我们举一个例子来说明 C# 中的 Func 委托。 输出 853632 说明在 FuncDelegate 内部,使用 delegate 关键字声明了一个名为 fun_delegate 的委托。此委托规范具有一个方法调用签名,该签名接受四个整数参数并返回一个整数。随后,通过静态类型声明了方法 delegatemethod。此技术将 fun_delegate 的定义与其静态附加的签名进行了比较。它将 s1、d1、f1 和 g1 这四个输入数字相加并返回结果。 在 Main() 方法中,一个被归类为 fun_delegate 协议的对象 obj 被初始化,并传递了名为 delegatemethod 的方法。这相当于 obj 直接调用委托方法或调用 delegatemethod 方法。 最后,调用 obj 委托,其四个整数参数为 19、39、32 和 36,表示为 obj(19, 39, 32, 36)。通过调用 Console.WriteLine() 方法,输出显示在控制台上。 Func 委托和 Action 委托之间的主要区别![]() 以下是 C# 中 Func 委托和 Action 委托之间的区别
结论总之,C# 中的 Func 委托 和 Action 委托 都有一个共同点,即它们可以将特定的方法签名打包到一个实体中。要选择的方法仅由操作的类型(无论它是否返回值)决定,然后用于各种目的。Func 是一种函数形式,在期望返回值时使用,从而为处理不同类型的数据提供了更广泛的可能性。此外,Action 用于在函数执行是非返回类型的情况下,并为需要副作用或返回 void 的情况提供了清晰的解决方案。因此,通过理解它们的差异,开发人员可以为他们的各种情况选择相应的委托,从而促进更清晰、更易读的编程。 下一个主题C# 中系统级异常与应用级异常的区别 |
我们请求您订阅我们的新闻通讯以获取最新更新。