C#中继承对象的内存分配

时间:2018-01-05 13:25:37

标签: c# .net oop inheritance heap

我对如何在继承的情况下完成对象分配感到困惑 请考虑以下代码。

class Base
{
}
class Derived : Base
{
// some code
}

如果我们做的话,从主要

Derived d = new Derived();

Base b = new Derived();

堆中两种情况的内存分配是什么。 派生对象是在基础对象内部还是它们彼此相邻

2 个答案:

答案 0 :(得分:5)

两个对象的内存分配看起来完全一样。两个对象的类型都相同Derived

当然,每个对象都将在堆上的自己的空间中分配。

创建对象时的重要性是用于构造对象的类(类型),而不是存储对象的引用类型。

每个对象都作为完整实体存在,但您可以将其视为其继承的所有类的所有部分的摘要。在一种方式Derived对象实例里面包含Base对象实例。不是相反。

答案 1 :(得分:1)

在这两种情况下,您都会实例化具体Derived类的对象,因此两者的内存占用量相同 - 您使用Base和Derived类的引用来引用它们,但是您可以在两个cades中实例化Derived类。

但至于为你的问题提供一般答案 - 是的,在派生类的内存实例中包含其基类的所有成员。