【问题标题】:vtable and MSILvtable 和 MSIL
【发布时间】:2011-03-31 20:40:35
【问题描述】:

我必须教抽象类和接口之间的区别。它可以帮助我回答以下问题。请帮我!!! 是否可以使用 ILdasm 查看 vtable 的内容?我想看一个例子来说明在抽象类的情况下 vtable 和 IL 语言中的接口之间的区别。

【问题讨论】:

  • 如果你在讲授接口和抽象类之间的区别,请教你为什么要使用一个而不是另一个,以及每个的目的,而不是每个工作的具体细节。你可以告诉我电钻是如何工作的以及交流电是如何驱动电机的,但这并不意味着我应该用它来洗衣服。
  • 接口在 CLR 中的工作方式可能比您预期的要复杂。它并不像拥有一个指向 vtable 的指针那么简单。

标签: c# cil


【解决方案1】:

不,vtable 是由 CLR 类加载器在运行时构建的。你当然可以猜到,它包含了根据类或接口声明的jit方法的指针。

演示它需要查看生成的机器代码并使用反汇编和内存 1 窗口。请务必使用 Release 版本或在使用时关闭 Edit + Continue,它会增加一个额外的间接层。

【讨论】:

    猜你喜欢
    • 2021-11-06
    • 2011-06-21
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    • 2010-09-10
    • 2011-12-03
    • 2013-10-13
    相关资源
    最近更新 更多