【问题标题】:Abstract vs Normal class inheritance performance抽象与普通类继承性能
【发布时间】:2010-10-30 03:32:20
【问题描述】:

当您从一个类派生并实例化子类时,运行时也会实例化超类,对吧?

既然抽象类不能被实例化,那么在子类被实例化时,它们不是由运行时创建的吗?

如果是这样,那么抽象类继承会比普通类实例更快吗?

【问题讨论】:

    标签: c# .net performance inheritance class


    【解决方案1】:

    运行时从不创建基类和派生类的单独实例 - 只是派生类实例还具有基类的所有变量等,并将基类构造函数运行为初始化的一部分。这里“普通”基类和抽象基类之间没有区别。

    【讨论】:

      【解决方案2】:

      我认为您对某些细节感到困惑。

      当您构造一个对象时,该对象的类继承自另一个类,这不像您在内存中获得两个对象。

      你只得到一个,但它为来自两者的字段留出了空间。

      换句话说,如果原始类需要 10 个字节来保存其字段,而您的继承类需要 5 个字节来保存其特定字段,那么当您从继承的类构造对象时,它将占用 15 个字节,其中前 10 个对应于基类中的字段。 (请注意,这是一个非常简化的解释,还有更多内容决定了对象的实际大小)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-07
        • 1970-01-01
        相关资源
        最近更新 更多