虚拟方法如何在C#中工作?

时间:2010-07-22 16:21:01

标签: c# .net

我知道在C ++中有vpointer和vtable。 虚函数表是类中虚拟方法的方法指针列表。 类的每个实例都有一个指向表的指针,当我们从实例调用虚方法时使用该指针。

我想知道这是如何在C#中实现的。据我所知,虚拟表的概念是相同的。但是,如果使用了Vpointer,则使用GetType()。

我会尽可能多地了解细节。 谢谢。

2 个答案:

答案 0 :(得分:7)

Vtables是C ++中的一种可能方法,它们不受C ++标准规定的 。 .NET使用的方法明显符合CLI和C#的已发布标准,但未指定实现细节(并且可能会发生变化)。

您可以从接口,覆盖成员和“新”成员的工作方式推断出一些细节。

你为什么想知道这个?如果您遇到特定问题,那么说明问题将允许其他人直接解决问题。

答案 1 :(得分:1)

C# spec10.5.3 Virtual Methods中查看他们的文档(虽然它是规范而不是实现)。