int[] array1 = new[] { 1, 2, 3 };
int[] array2 = (int[])array1.Clone();
array2[0] = 9;
Debug.Assert(array1[0] != array2[0]);
这工作正常。Clone()
做一个浅拷贝,但是数组类型是值类型,所以它们也被克隆了。
我的问题是这是否在语言规范中是明确的,或者这是否只是当前实现的产物?
我的怀疑是由于System.Array
通过运行时泛型在幕后“无形地”支持值类型。查看公共方法,您会期望值类型被装箱。