C# Action和Func的区别 - 通用委托的实际应用

煙雲
发布: 2025-12-05 10:21:07
原创
113人浏览过
Action 无返回值,用于执行操作;Func 有返回值,用于计算结果。二者在事件处理、LINQ、回调和行为注入等场景中各司其职,提升代码简洁性与可维护性。

c# action<t>和func<t, tresult>的<a   style=区别 - 通用委托的实际应用">

ActionFunc 是 C# 中两个常用的泛型委托,它们都用于封装方法,但用途和结构不同。理解它们的区别并掌握实际应用场景,有助于写出更简洁、可维护的代码。

基本定义与返回值差异

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

  • Action 代表一个接受一个参数(类型为 T)且没有返回值的委托,即返回类型为 void
  • Func 代表一个接受一个参数(类型为 T)并返回指定类型(TResult)结果的委托。

例如:

Action print = s => Console.WriteLine(s);
print("Hello"); // 输出:Hello


Func square = x => x * x;
int result = square(5); // result = 25

常见使用场景对比

两者在实际开发中广泛应用于事件处理、集合操作、依赖注入等场景。

Action 的典型应用:

  • 执行某种操作而不关心结果,比如日志记录、消息通知。
  • 作为回调函数传递给其他方法,例如集合遍历中的 List.ForEach(action)
var names = new List { "Alice", "Bob" };
names.ForEach(name => Console.WriteLine($"Hello, {name}"));


Func 的典型应用:

AiTxt 文案助手
AiTxt 文案助手

AiTxt 利用 Ai 帮助你生成您想要的一切文案,提升你的工作效率。

AiTxt 文案助手 98
查看详情 AiTxt 文案助手
  • 需要对输入进行转换或计算后返回结果,比如数据映射、条件判断。
  • LINQ 查询中大量使用 Func,如 WhereSelect 等。
var numbers = new List { 1, 2, 3, 4 };
var squares = numbers.Select(x => x * x).ToList(); // 使用 Func

灵活应对多参数情况

这两个委托都有多个泛型重载版本:

  • Action 支持最多 16 个参数的重载(如 Action),但始终无返回值。
  • Func 同样支持多个输入参数,最后一个类型参数始终是返回类型,例如 Func 表示两个 int 输入,返回 bool。

例如:

Action logEntry = (msg, level) => Console.WriteLine($"[{level}] {msg}");
logEntry("Error occurred", 3);


Func formatMsg = (s, n) => $"{s}: {n} times";
string output = formatMsg("Clicked", 5); // "Clicked: 5 times"

在自定义方法中使用委托提升灵活性

将 Action 或 Func 作为参数传入方法,可以实现行为的动态注入,增强代码复用性。

void ProcessData(List data, Action onItemProcessed, Func filter)
{
    foreach (var item in data)
    {
        if (filter(item))
        {
            onItemProcessed(item);
        }
    }
}


调用时可根据需要传入不同的逻辑:

ProcessData(numbers,
    item => Console.WriteLine($"Processing {item}"),
    x => x % 2 == 0 // 只处理偶数 );

基本上就这些。Action 适合“做点事”,Func 适合“算个结果”。合理选用能让代码更清晰、更具扩展性。

以上就是C# Action和Func的区别 - 通用委托的实际应用的详细内容,更多请关注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号