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
  • asp之家 软件编程 m.aspxhome.com