当前位置:首页 科普知识 delegate(.NET)

delegate(.NET)

发布时间:2023-09-07 04:37:02

委托(delegate)是一种类型安全的函数指针,用于通用语言运行库(CLI)。在C#中,delegate是一种class,包装了一个或多个函数指针及绑定的类实例。Delegate用来实现函数回调与事件接收(event listener)。Delegate对象可以作为参数传递给其他函数,以引用(referenced)封装在delegate对象中的函数,而无需在编译时刻就绑定被调用函数。

delegate(.NET)详细介绍

委托(delegate)是一种类型安全的函数指针,用于通用语言运行库(CLI)。在C#中,delegate是一种class,包装了一个或多个函数指针及绑定的类实例。Delegate用来实现函数回调与事件接收(event listener)。Delegate对象可以作为参数传递给其他函数,以引用(referenced)封装在delegate对象中的函数,而无需在编译时刻就绑定被调用函数。

delegate(.NET)

一旦为委托分配了函数方法,委托将与该函数方法具有完全相同的行为。与委托的类型特征(由返回类型和参数组成)匹配的任何方法都可以分配给该委托。

delegate技术实现细节

“委托”作为类,继承自System.MulticastDelegate(抽象类)。可以认为包含:一个类对象实例的地址(Target属性),该类的一个方法的地址(Method属性),以及另一个“委托”实例的引用(reference)。因此引用一个“委托”对象,可能实际上引用了多个“委托”的实例。“委托”对象被调用时,依次调用里面的多个“委托”的实例。这对于事件驱动的程序比较有用。

如果“委托”封装了一个静态函数,则其内部的绑定的类对象地址为null。

delegate(.NET)

可以通过Delegate类的GetInvocationList()取出这些委托,并查看其Target和Method属性,获取所引用的方法名等信息。

delegate类型特征

型签(英语:type signature)或型标(type annotation)是计算机科学中对程序的函数、方法、子过程、以及变量等给出其类型。特别是对函数给出其输入参数数量、类型与次序及输出结果的类型。许多编译器产生的内部使用的函数名包含了其类型特征,这称为名字修饰,给链接器辨别不同的函数提供了方便。

类型特征的现代应用:

面向对象语言使用的interface,实际上是利用了函数类型特征的模板。

C++支持的函数重载实际上用不同的类型特征来辨识。

delegate(.NET)

delegate函数指针

函数指针是一种在C、C++、D语言、其他类C语言和Fortran2003中的指针。函数指针可以像一般函数一样,用于调用函数、传递参数。在如C这样的语言中,通过提供一个简单的选取、执行函数的方法,函数指针可以简化代码。

函数指针只能指向具有特定特征的函数。因而所有被同一指针运用的函数必须具有相同的参数和返回类型。

delegate通用语言运行库

通用语言运行平台(Common Language Runtime,简称CLR)是微软为他们的.NET的虚拟机所选用的名称。它是微软对通用语言架构(CLI)的实现版本,它定义了一个代码运行的环境。CLR运行一种称为通用中间语言的字节码,这个是微软的通用中间语言实现版本。

CLR运行在微软的视窗操作系统上。查看通用语言架构可以找到该规格的实现版本列表。其中有一些版本是运行在非Windows的操作系统中。

温馨提示:
本文【delegate(.NET)】由作者 爱百科 转载提供。 该文观点仅代表作者本人, 自学教育网 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
(c)2008-2025 自学教育网 All Rights Reserved 汕头市灵创科技有限公司
粤ICP备2024240640号-6