c#中的对象内存数量消耗多少?

Sal*_*Hoo 5 c# memory arrays

假设我们先前已经从D类实例化了三个对象A,B,C,现在数组定义如下:D [] arr = new D [3]; ARR [0] = A; ARR [1] = B; ARR [2] = C;

数组是否包含对象的引用或具有单独的副本?

Guf*_*ffa 5

引用类型数组仅包含引用.

在32位应用程序中,引用是32位(4字节),而在64位应用程序中,引用是64位(8字节).因此,您可以通过将数组长度乘以参考大小来计算近似大小.(对于数组类,内部变量还有一些额外的字节,一些额外的字节用于内存管理.)


Tim*_*mwi 5

C# 区分引用类型值类型

引用类型是使用字声明。这些类型的变量包含引用,因此数组将是对对象的引用的数组。每个引用大小为 4 字节(在 32 位系统上)或 8 字节(在 64 位系统上)。

一个值类型是使用这个词声明结构。每次分配此类值时都会复制这些值。值类型的数组包含值的副本,因此数组的大小是结构的大小乘以元素的数量。

通常,当我们说“对象”时,我们指的是引用类型的实例,因此您的问题的答案是“是”,但请记住区别并确保您不会意外创建大型结构的大型数组。