.C#中的委托是什么?事件是不是一种委托?
分析如下:
1、委托是CTS(公共类型系统)规定的5种类型之一(类类型、结构类型、接口类型、枚举类型、委托类型)。
2、通俗的说,委托是这样一种类型:这种类型的实例,指向其它类型的方法。
委托主要就是提供间接调用、构建双向系统用的,他为消息模型和多线编程提供了基础。
3、再说说事件,事件并不是一种类型,它是一个方法,它是为了简化委托的注册而出现的。事件是一种委托,这是严重的误导!
拓展资料
1、我们知道委托是一个引用类型,所以它具有引用类型所具有的通性。它保存的不是实际值,而是保存对存储在托管堆(managedheap)中的对象的引用。那它保存的是对什么的引用呢?委托保存的是对函数(function)的引用。
2、对学过C/C++的人,是不是觉得跟函数指针很像呢!委托可以引用实例和静态(在VisualBasic中为Shared)方法,而函数指针只能引用静态方法。其实它们是有区别的,在非托管C/C++中,函数的地址就是一个内存地址。该地址不会携带任何额外的信息,例如函数期望的参数个数、参数类型、函数的返回值类型及函数的调用约定。总之,非托管C/C++中函数指针是非类型安全的。而.NET中的委托是类型安全的,委托会检测它所保存的函数引用是否和声明的委托匹配。
(资料来源:
广告 您可能关注的内容 |