C#中的委托与事件
delegate及event在C#中叫委托与事件。他们的作用就是在类外执行其他对象的一个函数的操作。
最近看C++的相关文章才知道,
原来我们定义一个委托,其实就是定义一个函数格式,它可以告诉编译器,当代码中调用到该委托的时候,它的格式是什么样子的【返回值,参数数量,参数类型】
事件就是一个函数指针,它告诉程序,你把合适的地址及参数传给我,我就能给你做你希望我做的事情。事件在未绑定的时候是空的,因为该指针未指向任何地址。
而绑定事件,则是告诉程序,这个函数指针的地址是什么。这个函数指针的地址,就是绑定到这个事件上的方法的起始地址,绑定告诉地址,从方法的起始地址开始,直到跳出函数这一块,就是程序想让你做的,你一步步做下来就行了。
C#中的委托与事件其实是与C++众的函数指针相对应的。
第一步:通过委托告诉编译器,这个函数指针的类型是什么样子的:
delegate int OnCheckHandler(int a, string b);
第二步:声明一个指针:
event OnCheckHandler CheckEvent;
以上两步相当于C++中的:
int (CheckEvent*)(int a, string b);
第三步:设置指针的值:
int OnChecked(int x, string y)
{
// ...
return 0;
}
CheckEvent = new OnCheckHandler(OnChecked);
这步相当于C++中的
CheckEvent = OnChecked;
其中OnChecked是函数OnChecked的起始地址。当程序运行到CheckEvent后,就会跳转到OnChecked地址所代表的函数中了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构