C#委托
C#委托可以看做是方法引用,或者叫方法指针,它和c++中使用的函数指针最大的区别就是委托是类型安全的。
委托声明时必须将方法的返回值和详细的参数列表列出来,这样在为委托指定方法时,可以进行类型安全的检查。
委托声明的方式如下:
public delegate int AddHandler(int value);
委托的关键字是delegate,除去这个关键字,其余部分就是一个完整的方法签名的格式,包括了委托返回类型、委托名称和委托所需的详细参数列表。
为委托指定方法有以下几种方式:
- 通过实例化委托对象的方式来指定方法

- 通过直接指定的方式来为委托指定方法

- 通过匿名方法的方式来为委托指定方法

使用委托的方式:
addHandler(5);
一个委托可以指定多个方法,当一个委托被指定多个方法后,在执行委托时,它指定的方法会被依次调用。

我们通过+=操作来为委托添加方法,通过-=操作来为委托去除方法。
有时,委托和接口会发生混淆,委托和接口都允许类设计器分离类型声明和实现。给定的接口可由任何类或结构继承和实现;可以为任何类中的方法创建委托,前提是该方法符合委托的方法签名。接口引用或委托可由不了解实现该接口或委托方法的类的对象使用。

Test(program.Add, 5);

我们可以按照以下的方式来使用MyTest方法
MyAddhandler addHandler = new MyAddhandler();
MyTest(addHandler, 5);
MyTest(addHandler, 5);
那么如何去却分委托和接口呢,MSDN上是这么建议的:
在以下情况中使用委托:
-
当使用事件设计模式时。
-
当封装静态方法可取时。
-
当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。
-
需要方便的组合。
-
当类可能需要该方法的多个实现时。
在以下情况中使用接口:
-
当存在一组可能被调用的相关方法时。
-
当类只需要方法的单个实现时。
-
当使用接口的类想要将该接口强制转换为其他接口或类类型时。
-
当正在实现的方法链接到类的类型或标识时:例如比较方法。
作者:李潘
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通