【发布时间】:2010-07-22 16:21:01
【问题描述】:
我知道在 C++ 中有 vpointer 和 vtable。 虚函数表是指向类中虚方法的方法指针列表。 类的每个实例都有一个指向表的指针,当我们从实例调用虚方法时会用到它。
我想知道这是如何在 C# 中实现的。据我所知,虚拟表的概念是相同的。但是 vpointer 是用 GetType() 代替的。
我希望能提供尽可能多的细节。 谢谢你。
【问题讨论】:
我知道在 C++ 中有 vpointer 和 vtable。 虚函数表是指向类中虚方法的方法指针列表。 类的每个实例都有一个指向表的指针,当我们从实例调用虚方法时会用到它。
我想知道这是如何在 C# 中实现的。据我所知,虚拟表的概念是相同的。但是 vpointer 是用 GetType() 代替的。
我希望能提供尽可能多的细节。 谢谢你。
【问题讨论】:
Vtables 是 C++ 中一种可能的方法,它们不是由 C++ 标准强制要求的。 .NET 使用的方法显然符合已发布的 CLI 和 C# 标准,但未指定实现细节(并且可能会发生变化)。
您可以从接口、覆盖成员和“新”成员的工作方式中推断出一些细节。
你为什么想知道这个?如果您有特定问题,那么说明问题将允许其他人直接解决。
【讨论】:
在C# spec:10.5.3 Virtual Methods 中查看他们的文档(尽管它是规范而不是实现)。
【讨论】: