C#中的Func和Action委托有什么区别 C#常用泛型委托Func与Action

小老鼠
发布: 2025-11-12 14:02:03
原创
764人浏览过
Func有返回值而Action没有,前者用于需返回结果的场景如LINQ查询,后者用于执行无返回的操作如事件处理,两者均支持最多16个输入参数。

c#中的func和action委托有什么区别 c#常用泛型委托func与action

FuncAction 是 C# 中内置的泛型委托类型,广泛用于 LINQ、异步编程和函数式编程风格中。它们都属于系统定义的通用委托,但用途和结构有明显区别

返回值的区别:Func 有返回值,Action 没有

最核心的区别在于是否具有返回值:

• Func 委托封装的方法必须返回一个值,最后一个泛型参数表示返回类型。
• Action 委托封装的方法不返回任何值(即 void)。

例如:

Func add = (x, y) => x + y; // 返回 int
Action print = message => Console.WriteLine(message); // 无返回值

泛型参数数量限制

两者都支持最多 16 个输入参数的重载,但使用方式略有不同:

• Func 最多支持 16 个输入参数 + 1 个返回值类型,如 Func<T1, T2, ..., T16, TResult>。
• Action 最多支持 16 个输入参数,没有返回类型,如 Action<T1, T2, ..., T16>。

示例:

Action Figure AI
Action Figure AI

借助Action Figure AI的先进技术,瞬间将照片转化为定制动作人偶。

Action Figure AI 68
查看详情 Action Figure AI
Func check = (num, str) => num > 0 && !string.IsNullOrEmpty(str);
Action logSum = (a, b, c) => Console.WriteLine(a + b + c);

典型使用场景

根据是否有返回值的需求选择合适的委托类型:

• 使用 Func 的场景:需要计算并返回结果,比如条件判断、数据转换、表达式求值。
• 使用 Action 的场景:执行某个操作但不需要返回结果,比如日志输出、事件处理、回调通知。

在 LINQ 中,Where、Select 等方法内部大量使用 Func:

var result = list.Where(x => x.Age > 18).Select(x => x.Name); // Where 接收 Func<T, bool>, Select 接收 Func<T, TResult>

基本上就这些。选择 Func 还是 Action,关键看方法是否需要返回值。用好这两个泛型委托,可以让代码更简洁、可读性更强。

以上就是C#中的Func和Action委托有什么区别 C#常用泛型委托Func与Action的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号