news 2026/2/10 22:58:50

C#委托:灵活方法调用的秘密

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#委托:灵活方法调用的秘密

委托的概念

委托是一种引用类型,用于封装具有特定参数列表和返回类型的方法。它类似于函数指针,但提供了更高的安全性和灵活性。委托允许将方法作为参数传递、存储在变量中或从其他方法返回。

委托的声明与使用

委托的声明需要指定方法的签名(参数和返回类型)。例如:

delegate int MathOperation(int a, int b);

声明后,可以将任何匹配签名的方法赋值给委托实例:

int Add(int x, int y) => x + y; MathOperation operation = Add; int result = operation(3, 5); // 调用委托,结果为8

多播委托

委托支持多播,即一个委托实例可以绑定多个方法,调用时会按顺序执行所有方法。通过+=-=运算符添加或移除方法:

void LogStart() => Console.WriteLine("开始计算"); void LogEnd() => Console.WriteLine("计算结束"); MathOperation operation = Add; operation += (a, b) => { LogStart(); return a * b; }; operation += (a, b) => { LogEnd(); return 0; };

注意:多播委托的返回值通常是最后绑定的方法的返回值。

内置委托类型

.NET 提供了常用的内置委托类型,无需自定义:

  • Action:无返回值的方法(支持最多16个参数)。
  • Func:有返回值的方法(最后一个泛型参数为返回类型)。
  • Predicate<T>:返回布尔值的单参数方法。

示例:

Func<int, int, int> func = Add; Action<string> log = message => Console.WriteLine(message);

委托的应用场景

  1. 事件处理:委托是事件的基础,用于实现发布-订阅模式。
  2. 回调机制:将方法作为参数传递给异步操作或耗时任务。
  3. 策略模式:通过委托动态切换算法或行为。

匿名方法与Lambda表达式

C# 允许使用匿名方法或Lambda简化委托的声明:

MathOperation operation = delegate(int a, int b) { return a - b; }; // 或使用Lambda MathOperation operation = (a, b) => a / b;

注意事项

  • 委托实例不可变,+=-=会返回新实例。
  • 避免长时间持有委托引用,可能导致内存泄漏(如事件未注销)。
  • 多播委托的执行顺序与绑定顺序一致,但依赖此特性时需谨慎设计。

通过合理使用委托,可以提升代码的模块化和扩展性,尤其在需要动态行为或解耦的场景中。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/9 22:15:19

14、开源办公与网络应用全解析

开源办公与网络应用全解析 在数字化办公与网络交流的大环境下,有许多实用的工具和应用能帮助我们更高效地完成工作和沟通。下面将详细介绍一些开源办公软件以及网络应用的特点和使用方法。 文档转换与注意事项 当文档转换完成后,进度屏幕会显示转换过程的结果。不过需要注…

作者头像 李华
网站建设 2026/2/8 13:55:33

Ubuntu安装及相关设置

Ubuntu安装及相关设置 分区设置参考 个人推荐&#xff0c;不用软件数据存放的位置不同&#xff0c;避免安装时大量修改配置&#xff0c;耗时耗力。挂载点大小类型备注/boot/efi512MB&#xff08;默认即可&#xff09;EFIUEFI必选swap内存2倍&#xff08;4G/8G&#xff09;swap休…

作者头像 李华
网站建设 2026/2/7 8:14:37

8、网络技术:VXLAN BGP EVPN中的关键特性解析

网络技术&#xff1a;VXLAN BGP EVPN中的关键特性解析在网络技术的发展中&#xff0c;VXLAN BGP EVPN 架构凭借其高效、灵活的特点&#xff0c;成为了大型数据中心网络的重要解决方案。本文将深入探讨该架构中的几个关键特性&#xff0c;包括 IGMP 窥探、分布式 IP 任播网关、集…

作者头像 李华
网站建设 2026/2/2 22:51:40

18、数据中心外部连接性设计与实现

数据中心外部连接性设计与实现1. 外部连接性概述数据中心为用户托管数据和应用程序&#xff0c;而用户通常位于数据中心外部。因此&#xff0c;数据中心的外部连接性设计至关重要&#xff0c;它涉及到不同的放置选项和互连选项&#xff0c;包括Layer 3和Layer 2的连接性选项。对…

作者头像 李华
网站建设 2026/2/7 18:13:17

Dify前端开发完全指南:从入门到精通,收藏这篇就够了

摘要 本文全面介绍了Dify前端开发框架&#xff0c;包括环境搭建、开发流程、测试方法以及部署实践。通过详细的步骤说明和丰富的代码示例&#xff0c;帮助开发者快速掌握Dify前端开发技能&#xff0c;构建高质量的AI应用界面。 目录 Dify前端框架概述开发环境搭建项目配置详…

作者头像 李华
网站建设 2026/2/6 9:34:45

ChatGPT-5.2的“静默爆发”与行业的九级地震

各位科技爱好者、职场同行、以及所有被AI浪潮推着走的朋友们&#xff0c;请注意了&#xff01; 如果说GPT-4是AI普及化的“奇点”&#xff0c;那么OpenAI新发布的ChatGPT-5.2&#xff0c;则标志着“后GPT-4时代”的正式终结&#xff0c;以及“AI深度专业化时代”的开启。 为什…

作者头像 李华