22

このコードを使用して、ある 2D 配列を別の 2D 配列にコピーしました。

Array.Copy(teamPerformance, 0,tempPerformance,0, teamPerformance.Length);

ただし、 で一部のデータを変更するとtempPerformance、これらの変更は にも適用されteamPerformanceます。
それを制御するにはどうすればよいですか?

4

3 に答える 3

60

Clone() が必要です

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
于 2016-09-01T22:38:22.053 に答える
17

これは正しいです。浅いArray.Copyコピーを実行するため、内側の次元内の配列のインスタンスは参照によってコピーされます。次のように、LINQ を使用してコピーを作成できます。

var copy2d = orig2d.Select(a => a.ToArray()).ToArray();

これはideoneのデモです。

于 2013-03-31T02:52:19.803 に答える