簡體   English   中英

C#中繼承對象的內存分配

[英]Memory allocation for object in inheritance in C#

我對在繼承的情況下如何完成對象分配感到困惑,請考慮以下代碼。

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

如果我們這樣做,從主要

Derived d = new Derived();

Base b = new Derived();

堆中兩種情況的內存分配是什么。 派生對象是在基礎對象內部還是它們彼此相鄰

兩個對象的內存分配看起來完全相同。 兩個對象都是Derived相同的類型。

當然,每個對象都將在堆上的自己的空間中分配。

創建對象時的重要性是用於構造對象的類(類型),而不是存儲對象的引用類型。

每個對象都作為完整實體存在,但您可以將其視為從其繼承的所有類中的所有部分的摘要。 在某種程度上, Derived對象實例包含Base對象實例。 不是相反。

在這兩種情況下,您都會實例化具體Derived類的對象,因此兩者的內存占用量相同 - 您使用Base和Derived類的引用來引用它們,但是您可以在兩個cades中實例化Derived類。

但是,為您的問題提供一般答案 - 是的,在派生類的內存實例中包含其基類的所有成員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM