标签: c# clr
我发现一个类型的方法表包含: (1)在该类型中新定义的方法。 (2)基类型中定义的虚方法。
我完全理解,对于其他语言的虚拟表(例如C ++),只需要将虚拟方法存储在表中。但是对于C#,由于方法表并不完全等于虚拟表,因为类型中新定义的非虚方法存在于该类型的方法表中。因此我想知道为什么C#中的方法表是这样设计的?为什么不存储基类型的非虚方法,而存储类型本身的方法。
感谢。
答案 0 :(得分:-1)
因为vtable适用于虚拟方法。非虚拟方法可以静态解析,因此不需要查找表。
vtable