【问题标题】:How do virtual methods work in C#?虚拟方法在 C# 中如何工作?
【发布时间】:2010-07-22 16:21:01
【问题描述】:

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

我想知道这是如何在 C# 中实现的。据我所知,虚拟表的概念是相同的。但是 vpointer 是用 GetType() 代替的。

我希望能提供尽可能多的细节。 谢谢你。

【问题讨论】:

    标签: c# .net


    【解决方案1】:

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

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

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

    【讨论】:

    • 没有什么特别的问题需要解决我只是想知道它是如何在内部工作/实现的。
    【解决方案2】:

    C# spec:10.5.3 Virtual Methods 中查看他们的文档(尽管它是规范而不是实现)。

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 2011-04-17
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      相关资源
      最近更新 更多