Abstract vs Normal类继承性能

时间:2009-05-30 19:40:58

标签: c# .net performance inheritance class

当你从类和实例派生子类时,运行时也会实例化超类,对吗?

由于抽象类无法实例化,因此当实例化子类时,它们是否不是由运行时创建的?

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

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:8)

我认为你有一些细节困惑。

当你构造一个对象时,该对象的类继承自另一个类,它就不像你在内存中得到两个对象。

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

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