このコードを使用して、ある 2D 配列を別の 2D 配列にコピーしました。
Array.Copy(teamPerformance, 0,tempPerformance,0, teamPerformance.Length);
ただし、 で一部のデータを変更するとtempPerformance
、これらの変更は にも適用されteamPerformance
ます。
それを制御するにはどうすればよいですか?
このコードを使用して、ある 2D 配列を別の 2D 配列にコピーしました。
Array.Copy(teamPerformance, 0,tempPerformance,0, teamPerformance.Length);
ただし、 で一部のデータを変更するとtempPerformance
、これらの変更は にも適用されteamPerformance
ます。
それを制御するにはどうすればよいですか?
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
これは正しいです。浅いArray.Copy
コピーを実行するため、内側の次元内の配列のインスタンスは参照によってコピーされます。次のように、LINQ を使用してコピーを作成できます。
var copy2d = orig2d.Select(a => a.ToArray()).ToArray();
これはideoneのデモです。