将一个2Darrays复制到另一个2Darrays
我使用此代码将一个2D数组复制到另一个2D数组:
Array.Copy(teamPerformance, 0,tempPerformance,0, teamPerformance.Length);
但是,当我更改tempPerformance
某些数据时,这些更改也适用于teamPerformance
。
我应该怎么做来控制它?
这是正确的: Array.Copy
执行浅拷贝,因此内部维度内的数组实例通过引用复制。 您可以使用LINQ制作副本,如下所示:
var copy2d = orig2d.Select(a => a.ToArray()).ToArray();
这是一个关于ideone的演示 。
你需要克隆()
double[,] arr = { {1, 2}, {3, 4} }; double[,] copy = arr.Clone() as double[,]; copy[0, 0] = 2; //it really copies the values, not a shallow copy, //after: //arr[0,0] will be 1 //copy[0,0] will be 2
根据MS( http://msdn.microsoft.com/en-us/library/z50k9bft.aspx ):
如果sourceArray和destinationArray都是引用类型数组或者都是Object类型的数组,则执行浅复制。 Array的浅表副本是一个新的Array,包含对与原始Array相同元素的引用。 不复制元素本身或元素引用的任何内容。 相反,Array的深层副本会复制元素以及元素直接或间接引用的所有内容。