C#的Action和Func委托是什么?如何使用它们传递方法?


Action用于无返回值方法传递,Func用于有返回值方法传递;二者均支持0-16个参数,可结合Lambda表达式使用,广泛应用于回调、LINQ查询等场景,提升代码可读性与扩展性。

c#的action和func委托是什么?如何使用它们传递方法?

在C#中,ActionFunc 是系统内置的泛型委托类型,用于简化方法的传递和调用。它们常用于将方法作为参数传给其他方法,实现回调、事件处理、LINQ 查询等场景。

什么是 Action?

Action 是一个表示无返回值方法的委托。它可以接受 0 到 16 个输入参数。

常见形式:

  • Action:无参数,无返回值
  • Action:一个参数,无返回值
  • Action:两个参数,无返回值

示例:

万彩商图 万彩商图

专为电商打造的AI商拍工具,快速生成多样化的高质量商品图和模特图,助力商家节省成本,解决素材生产难、产图速度慢、场地设备拍摄等问题。

万彩商图 212 查看详情 万彩商图
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委托是什么?如何使用它们传递方法?的详细内容,更多请关注其它相关文章!


# 相关文章  # 渝中区网站推广优化  # 南宁独特seo哪家好  # 淄博企业网站建设推广  # 女装线下营销推广方式  # 哪个网站可以个人推广  # 熊掌号seo云浮  # seo实操作项目  # 广元营销推广一般多少钱  # 全员营销深入推广工作  # 东莞做棋牌网站建设  # 中文网  # 委托  # 最多  # 你可以  # 是在  # 面试题  # 回调  # 是一个  # 如何使用  # 返回值  # 代码可读性  # c# 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 在PHP环境中正确加载HTML资源:CSS样式与图片路径指南  windows10怎么更改下载路径_windows10默认存储位置修改教程  12306不能订票的时间段是固定的吗? | 节假日购票时间有无变化  mysql如何管理数据库账户_mysql数据库账户管理技巧  怎样让Windows 11的开始菜单恢复经典样式_Open-Shell工具使用指南【怀旧】  iPhone 13 Pro Max如何设置桌面小组件_iPhone 13 Pro Max小组件添加指南  苹果SE如何开启单手模式_苹果SE单手操作功能  怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】  Lar*el Socialite单设备登录策略:实现用户唯一会话管理  在Spring Boot Thymeleaf中利用布尔属性实现容器的条件显示  可米酷漫画在线阅读入口_ 可米酷漫画官网直达链接  铁路12306怎么申请退票_铁路12306退票申请操作流程  Windows自带的便笺数据如何备份_防止数据丢失的便利贴迁移教程【干货】  Python中对象引用与链表属性赋值的机制解析  《幻兽帕鲁》手游帕鲁捕捉技巧分享  企查查官网和爱企查 企查查企业查询官网入口  偃武诸葛亮阵容搭配推荐  php如何实现多域名共享session_php存储session到redis与跨域读取配置  《跳跳舞蹈》循环播放方法  如何在Golang中处理表单文件上传_Golang 表单文件上传示例  Linux如何自动分析系统异常日志_Linux日志智能检测  喜茶GO更换登录账号方法  c++如何使用std::thread::join和detach_c++线程生命周期管理  Dagster资产间数据传递与用户配置管理教程  《偃武》甘宁技能详解  食品生产用水只要符合国家规定的生活饮用水卫生标准就可以吗  Python实时数据流中高效查找最大最小值  从J*a应用程序中导出MySQL表数据的技术指南  163邮箱在线登录 163邮箱网页版在线入口  店铺如何做视频号推广?做视频号推广有用吗?  动漫之家观看全集库 动漫之家免费资源网地址  抖音号已注销怎么解绑企业认证?不解绑企业认证会怎样?  曝《丝之歌》DLC有望开发!开发商还有神秘新企划  Go语言反射机制:如何访问被嵌入结构体遮蔽的方法  《大学搜题酱》官网地址登录  抖音如何进行蓝V认证 抖音企业号申请所需资料与流程  Yandex俄罗斯搜索引擎官网入口 Yandex网页端直接访问  AO3官方镜像链接 | 最新防走失网址永久收藏  mysql如何限制远程访问_mysql远程访问限制方法  C++ priority_queue怎么用_C++优先队列底层实现与自定义比较器  Golang如何使用log记录日志信息_Golang log日志记录方法总结  蛙漫2(台版)正版官网 2025免费网页版分享  《全民k歌》音乐怎么下载到本地2025  ExcelSCAN与LAMBDA如何创建自定义移动平均函数_SCAN实现任意窗口期移动平均计算  手机远程连接电脑方法  win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】  如何测试您的网站全球打开速度-网站海外测速工  猫眼电影app如何参与官方的抽奖活动_猫眼电影官方抽奖参与方法  以下哪一项是古代兵书三十六计中的计谋  TikTok网页版实时观看入口 TikTok网页版短视频在线浏览 

 2025-11-22

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.