0

所以我似乎无法弄清楚这一点。在以下代码中:

int[] array1 = { 86, 66, 76, 92, 95, 88 };
int[] array2 = new int[6];
array2 = array1;

当array2“复制”array1的值时,它是创建新的内存引用还是引用与array1中的值相同的内存索引?

4

3 回答 3

4

Arrays是引用类型,因此您分配的是相同的引用。

数组类型是从抽象基类型派生的引用类型 Array

如果要创建深层副本,可以使用Array.Copy

int[] array1 = { 86, 66, 76, 92, 95, 88 };
int[] array2 = new int[array1.Length];
Array.Copy(array1, array2, array1.Length);
于 2013-04-16T15:33:13.637 回答
3

数组是引用类型。您可以自己轻松检查

array2[1] = 2;
Console.WriteLine(array1[1]); // will print out 2

当您更改一个时,您会更改另一个,因为两者都指向(引用)相同的内存位置。

于 2013-04-16T15:34:15.393 回答
0

它引用同一个数组。因此,如果您更改 array1 中的值,它也会在 array2 中更改。

于 2013-04-16T15:34:41.083 回答