C#委托所蕴含的函数指针概念详细解析

 更新时间:2013年09月30日 09:49:15   作者:  
C#中用委托这种概念实现了函数指针技术而已,另外.ent提供额外的安全性,当然也损失了灵活性

原则:

1、函数指针,实际上是函数编码后的指令在内存中的首地址,在C++/C中,这个地址可以用函数名直接使用

一个函数调用另一个函数的时候,就可以把被调用函数以函数指针的形式作为参数传入

2、回调函数callback使用的技术就是函数指针:

回调函数就好像是一个中断处理函数,系统在符合你设定的条件时自动调用。为此,你需要做三件事:

1). 声明;

2). 定义;

3). 设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于DLL调用。

回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,一般用于截获消息、获取系统信息或处理异步事件。应用程序把回调函数的地址指针告诉DLL,而DLL在适当的时候会调用该函数。回调函数必须遵守事先规定好的参数格式和传递方式,否则DLL一调用它就会引起程序或系统的崩溃。通常情况下,回调函数采用标准WindowsAPI的调用方式,即__stdcall,当然,DLL编制者可以自己定义调用方式,但客户程序也必须遵守相同的规定。在__stdcall方式下,函数的参数按从右到左的顺序压入堆栈,除了明确指明是指针或引用外,参数都按值传递,函数返回之前自己负责把参数从堆栈中弹出。

3、C#中用委托这种概念实现了函数指针技术而已,另外.ent提供额外的安全性,当然也损失了灵活性

相关文章

  • C++中求数组长度的方法详解

    C++中求数组长度的方法详解

    C++中没有直接提供求数组长度的方法,提供了sizeof(),begin(),end()等方法,可以供求数组长度使用,文中通过代码示例给大家讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2023-12-12
  • Qt数据库应用之实现csv文件转xls

    Qt数据库应用之实现csv文件转xls

    这篇文章主要为大家详细介绍了如何利用Qt实现csv文件转xls功能,文中的示例代码讲解详细,对我们学习或工作有一定参考价值,需要的可以了解一下
    2022-06-06
  • QT线程池的使用(QThreadPool类和QRunnable类)

    QT线程池的使用(QThreadPool类和QRunnable类)

    本文主要介绍了QT线程池的使用(QThreadPool类和QRunnable类),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Qt股票组件之自选股列表拖拽、右键常用菜单功能的实现

    Qt股票组件之自选股列表拖拽、右键常用菜单功能的实现

    这篇文章主要介绍了Qt股票组件之自选股列表拖拽、右键常用菜单功能的实现方法,本文通过实例文字相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • C/C++实现图书信息管理系统

    C/C++实现图书信息管理系统

    这篇文章主要为大家详细介绍了c/c++实现图书信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C++ 回调接口设计和二进制兼容详细

    C++ 回调接口设计和二进制兼容详细

    再开发视频编辑 SDK,SDK的回调接口设计成 C 风格,结构中放着一些函数指针,既然对外接口是 C++,为什么不直接使用 C++ 的虚函数?这篇文章便对这一问题做个详细介绍,需要的朋友可以参考一下
    2021-09-09
  • 函数外初始化与函数内初始化详细解析

    函数外初始化与函数内初始化详细解析

    函数内初始化:bool FillStr(char *&szDst, int nSize);第一个参数中的&一定不能少,这是因为在函数外部我们只声明了这个指针,具体这个指针指向内存中的哪个地址我们并不知道,所以&是为了说明传递的是这个指针的引用,那么在函数内初始化后这个指针的地址也就是外面指针的地址了
    2013-09-09
  • C语言中变量与其内存地址对应的入门知识简单讲解

    C语言中变量与其内存地址对应的入门知识简单讲解

    这篇文章主要介绍了C语言中变量与其内存地址对应的入门知识简单讲解,同时这也是掌握指针部分知识的基础,需要的朋友可以参考下
    2015-12-12
  • C++11中的chrono库详解

    C++11中的chrono库详解

    C++11提供了日期时间相关的库chrono,通过chrono库可以很方便的处理日期和时间,这篇文章主要介绍了C++11中的chrono库,需要的朋友可以参考下
    2023-03-03
  • STL区间成员函数及区间算法总结

    STL区间成员函数及区间算法总结

    这篇文章主要汇总介绍了STL区间成员函数及区间算法,有需要的小伙伴可以参考下。
    2015-07-07

最新评论