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

san*_*ala 3 .net c# oop heap inheritance

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

class Base
{
}
class Derived : Base
{
// some code
}
Run Code Online (Sandbox Code Playgroud)

如果我们这样做,从主要

Derived d = new Derived();
Run Code Online (Sandbox Code Playgroud)

Base b = new Derived();
Run Code Online (Sandbox Code Playgroud)

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

Dal*_*kar 5

两个对象的内存分配看起来完全相同.两个对象属于同一类型Derived.

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

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

每个对象都作为完整实体存在,但您可以将其视为从其继承的所有类中的所有部分的摘要.在某种程度上,Derived对象实例包含Base对象实例.不是相反.