C#委托所蕴含的函数指针概念详细解析
时间:2023-06-03 15:26:13
原则:
1、函数指针,实际上是函数编码后的指令在内存中的首地址,在C++/C中,这个地址可以用函数名直接使用
一个函数调用另一个函数的时候,就可以把被调用函数以函数指针的形式作为参数传入
2、回调函数callback使用的技术就是函数指针:
回调函数就好像是一个中断处理函数,系统在符合你设定的条件时自动调用。为此,你需要做三件事:
1). 声明;
2). 定义;
3). 设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于DLL调用。
回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,一般用于截获消息、获取系统信息或处理异步事件。应用程序把回调函数的地址指针告诉DLL,而DLL在适当的时候会调用该函数。回调函数必须遵守事先规定好的参数格式和传递方式,否则DLL一调用它就会引起程序或系统的崩溃。通常情况下,回调函数采用标准WindowsAPI的调用方式,即__stdcall,当然,DLL编制者可以自己定义调用方式,但客户程序也必须遵守相同的规定。在__stdcall方式下,函数的参数按从右到左的顺序压入堆栈,除了明确指明是指针或引用外,参数都按值传递,函数返回之前自己负责把参数从堆栈中弹出。
3、C#中用委托这种概念实现了函数指针技术而已,另外.ent提供额外的安全性,当然也损失了灵活性
标签:函数指针,委托,C#
0
投稿
猜你喜欢
C# 图片剪切与缩小的实例
2021-12-31 14:32:53
mybatis查询语句揭秘之参数解析
2021-07-10 01:17:18
Android 短信验证码自动填写
2022-06-15 08:22:56
JAVA线程池原理实例详解
2021-10-01 17:59:01
springmvc 传递和接收数组参数的实例
2022-12-16 04:03:06
详解maven中profiles使用实现
2022-11-13 23:14:24
Android 接收微信、QQ其他应用打开第三方分享功能
2022-06-12 18:11:58
C#实现串口示波器
2021-08-26 02:02:32
java批量修改文件后缀名方法总结
2022-03-15 15:46:04
关于mybatis if else if 条件判断SQL片段表达式取值和拼接问题
2023-02-04 18:51:21
详解SpringBoot的事务管理
2022-01-15 13:39:26
C# 位图BitArray的使用
2022-09-13 23:54:46
Android上传文件到服务器的方法
2021-10-05 21:21:57
pagehelper踩坑记之分页乱套问题解决
2021-11-14 14:19:34
springboot如何读取自定义配置项
2021-06-18 10:44:53
java复制文件和java移动文件的示例分享
2023-09-17 08:18:06
c#程序定期把内存信息记录到log日志示例
2022-01-11 16:33:31
浅谈SpringBoot资源初始化加载的几种方式
2022-03-09 08:14:34
Java开发微信公众号接收和被动回复普通消息
2022-04-07 12:30:44
IDEA中Mybatis的MGB使用逆向工程配置的详细教程
2022-01-04 17:19:50