为什么方法表只包含基类的虚方法?

时间:2016-08-17 12:37:50

标签: c# clr

我发现一个类型的方法表包含: (1)在该类型中新定义的方法。 (2)基类型中定义的虚方法。

我完全理解,对于其他语言的虚拟表(例如C ++),只需要将虚拟方法存储在表中。但是对于C#,由于方法表并不完全等于虚拟表,因为类型中新定义的非虚方法存在于该类型的方法表中。因此我想知道为什么C#中的方法表是这样设计的?为什么不存储基类型的非虚方法,而存储类型本身的方法。

感谢。

1 个答案:

答案 0 :(得分:-1)

因为vtable适用于虚拟方法。非虚拟方法可以静态解析,因此不需要查找表。