新闻中心
C#的Action和Func委托是什么?如何使用它们传递方法?
Action用于无返回值方法传递,Func用于有返回值方法传递;二者均支持0-16个参数,可结合Lambda表达式使用,广泛应用于回调、LINQ查询等场景,提升代码可读性与扩展性。

在C#中,Action 和 Func 是系统内置的泛型委托类型,用于简化方法的传递和调用。它们常用于将方法作为参数传给其他方法,实现回调、事件处理、LINQ 查询等场景。
什么是 Action?
Action 是一个表示无返回值方法的委托。它可以接受 0 到 16 个输入参数。
常见形式:
- Action:无参数,无返回值
-
Action
:一个参数,无返回值 -
Action
:两个参数,无返回值
示例:
CA.LA
第一款时尚产品在线设计平台,服装设计系统
94
查看详情
void SayHello()
{
Console.WriteLine("Hello");
}
<p>void Greet(string name)
{
Console.WriteLine($"Hello, {name}");
}</p><p>// 使用 Action 调用无参方法
Action action1 = SayHello;
action1(); // 输出: Hello</p><p>// 使用 Action<string> 调用带参方法
Action<string> action2 = Greet;
action2("Alice"); // 输出: Hello, Alice
什么是 Func?
Func 是一个有返回值的泛型委托。它至少有一个参数是返回类型(最后一个),最多支持 16 个输入参数加一个返回值。
常见形式:
-
Func
:无输入参数,返回 TResult -
Func
:一个输入参数,返回 TResult -
Func
:两个输入参数,返回 TResult
示例:
int GetNumber()
{
return 42;
}
<p>string GetName(int id)
{
return id == 1 ? "Tom" : "Unknown";
}</p><p>// 使用 Func<int> 接收无参但有返回值的方法
Func<int> func1 = GetNumber;
int number = func1(); // number = 42</p><p>/
/ 使用 Func<int, string> 接收带参并返回字符串的方法
Func<int, string> func2 = GetName;
string name = func2(1); // name = "Tom"
如何使用它们传递方法?
你可以把普通方法、匿名方法、Lambda 表达式赋值给 Action 或 Func。
实际应用场景示例:定义一个通用执行器方法
void ExecuteAction(Action action)
{
Console.WriteLine("开始执行...");
action();
Console.WriteLine("执行结束。");
}
<p>int ExecuteFunc(Func<int> func)
{
Console.WriteLine("开始计算...");
int result = func();
Console.WriteLine("计算完成。");
return result;
}
调用示例:
ExecuteAction(SayHello); // 输出: // 开始执行... // Hello // 执行结束。 <p>int result = ExecuteFunc(GetNumber); // 输出: // 开始计算... // 计算完成。
Lambda 表达式写法更简洁:
ExecuteAction(() => Console.WriteLine("内联消息"));
<p>int square = ExecuteFunc(() => 5 * 5); // 返回 25
小结
Action 用于没有返回值的方法传递,Func 用于有返回值的方法传递。两者都支持多种参数数量,结合 Lambda 使用非常灵活。它们让代码更具可扩展性和可读性,尤其是在需要“把方法当参数”的场合,比如集合操作、异步编程、依赖注入等。
基本上就这些,掌握它们能让你写出更简洁、函数式风格的 C# 代码。
以上就是C#的Action和Func委托是什么?如何使用它们传递方法?的详细内容,更多请关注其它相关文章!
# c#
# 委托
# 最多
# 邮件营销推广单页网站
# 网站推广火热视频
# 贵州视频网站优化技巧
# b2c网站怎样推广
# 宁夏外贸网站建设
# 相关文章
# 你可以
# 是在
# 更有
# 实际应用
# 是一个
# 回调
# 如何使用
# 返回值
# 代码可读性
# 营销宝自主推广怎么取消
# 江门优化网站推广
# seo究竟怎么做
# 唐山网站怎么做推广赚钱
# 酒类推广营销策略有哪些
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
C++如何实现异步操作_C++11使用std::future和std::async进行异步编程
Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】
Lar*el Form Request中唯一性验证在更新操作中的正确实现
PDF文件体积过大处理_PDF压缩技巧详解
动漫岛观看全网网 动漫岛在线正版动漫入口
照顾宝贝2小游戏免费秒玩入口
C++编译期如何执行复杂计算_C++模板元编程(TMP)技巧与应用
《铁拳8》黑皮辣妹新实机:元气满满的18岁少女!
MAC怎么安装Homebrew包管理器_MAC为开发者和高级用户安装命令行工具
QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台
一加Ace 6T支持全新明眸护眼:通过了最严苛的护眼小金标认证
单12V-2×6实现为RTX 5090供电750W!甚至都没敢跑分
微信怎么把收藏的内容分类管理 微信收藏内容标签分类方法
Python字典中优雅地迭代剩余元素的方法
MAC怎么在地图App里使用“四处看看”_MAC体验部分城市的3D实景街景
如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略
如何优雅地解决Livewire文件上传难题?SpatieLivewireFilepond让一切变得简单
谷歌推RCS信息存档功能:公司可监控员工私密信息!
微信网页版官方入口教程 微信网页版网页版快速登录步骤
Go语言JSON解析深度指南:动态访问与结构体映射实践
如何在J*a中使用Locale处理多语言环境
win11开机启动修复循环怎么办 Win11无法进入系统高级启动解决方法【修复】
晋江读书网页版在线登录 晋江读书电脑版官网
漫蛙2正版漫画站 漫蛙2网页版快速访问入口
Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置
Lar*el 8 多关键词数据库搜索优化实践
J*aScript:在map操作中高效处理空数组
2306选座时如何选靠窗位置_12306选座靠窗座位查看方法解析
特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相
UC浏览器官网入口2025最新 UC浏览器网页版正式地址
天眼查企业查询官网入口 天眼查官方网页版查询
俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达
如何优雅地扩展SprykerGlue后端API授权逻辑,使用spryker/glue-backend-api-application-authorization-connector-extension
React Hooks最佳实践:动态组件状态管理的组件化方案
Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南
b站怎么取消点赞_b站点赞取消操作方法
NetBeans Ant项目:自动化将资源文件复制到dist目录的教程
126邮箱账号注册 电脑版登录入口
win11如何加载ICC颜色配置文件 Win11校色文件安装与显示器色彩管理【指南】
css滚动动画效果怎么实现_使用Animate.css滚动触发动画类
word中如何让数字纵向排列_Word数字纵向排列方法
C++如何打印当前代码行号与文件名_C++预定义宏FILE与LINE的使用
千牛数据看板网页版_千牛数据看板网页版访问方法
斑马英语APP如何开启夜间护眼阅读_斑马英语APP夜间模式与低蓝光设置教程
使用Pandas转换并合并DataFrame:多列映射至统一结构
JUnit5/Mockito:优雅测试内部依赖与异常处理的实践
Composer中的^和~符号代表什么_精通Composer版本号语义化约束
PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】
PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比
解决 Express.js 中 PUT 请求密码修改失败的路由配置指南


2025-11-22
浏览次数:次
返回列表
/ 使用 Func<int, string> 接收带参并返回字符串的方法
Func<int, string> func2 = GetName;
string name = func2(1); // name = "Tom"