假设我们之前实例化了类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/