将一个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的深层副本会复制元素以及元素直接或间接引用的所有内容。