2010-10-05 54 views

回答

4

代表基本上由CLR特别处理。编译器提供签名,但CLR知道如何处理它们。

第8.9.3节的ECMA-335这个分区我谈话:

委托是面向对象的等价函数指针。与函数指针不同,代表是面向对象的,类型安全的和安全的。通过定义派生自基类型的类来创建代表 System.Delegate(请参阅分区IV)。每个委托类型应提供一个名为Invoke的方法,其中包含适当的 参数,并且委托的每个实例都将调用转发给它的Invoke方法,以将一个或多个兼容的 静态或实例方法转发给特定对象。代理实例创建时,选择它委派的对象和方法为 。

除了实例构造函数和Invoke方法,委托可以有两个额外的方法:BeginInvoke和EndInvoke。这些用于异步调用。

大多数情况下,代表似乎只是另一种用户定义的类,它们严格控制着 。这些方法的实现由VES而不是用户代码提供。可以在委托类型上定义的唯一其他 成员是静态或实例方法。

(VES是虚拟执行系统; CLR是微软的落实VES)的

+0

乔恩斯基特来救援!感谢这个有价值的信息。 – 2010-10-05 09:21:12

相关问题