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

标签 c# arrays memory

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

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

最佳答案

C# 区分引用类型值类型

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

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

通常当我们说“对象”时,我们指的是一个引用类型的实例,所以您的问题的答案是"is",但请记住区别并确保您没有不小心创建了一个大型结构的大型数组。

关于c# - c#中的对象数组消耗多少内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3572936/

相关文章:

c# - 在 silverlight 中使用 WCF CloseAsync

javascript - 如何将字符串的字符更改为不同的字符?

c - C 数组的水平和垂直直方图

sql-server - SQL Server 如何以及何时占用变量的内存?

c++ - 如何在函数中释放内存

c# - 如何在 C# < 6 中模拟 C# 6 空条件

c# - 需要将复选框显示为单选按钮,ASP.net

javascript - 当元素相等时,Array.sort() 会产生意想不到的结果吗?

c - 输出文件中不需要的空格

c# - WCF (Silverlight) Duplex - 未访问服务器