Array.Cloneメソッドを使うことで、配列を複製して同じ内容を持った配列を生成することが出来ます。 Array.Cloneメソッドの戻り値はobjectであるため、必要に応じて複製元と同じ型にキャストして使います。
Array.Cloneメソッドで1次元配列の複製を作成する
using System;
class Sample {
static void Main()
{
int[] arr1 = {0, 1, 2, 3, 4};
int[] arr2;
// arr1を複製してarr2に代入
arr2 = (int[])arr1.Clone();
// 複製元と複製後の配列の要素を変更
arr1[2] = 0;
arr2[2] = 5;
// それぞれの配列の内容を表示
foreach (var elem in arr1) {
Console.Write("{0}, ", elem);
}
Console.WriteLine();
foreach (var elem in arr2) {
Console.Write("{0}, ", elem);
}
Console.WriteLine();
}
}
実行結果
0, 1, 0, 3, 4, 0, 1, 5, 3, 4,
このメソッドでは簡易コピーが行われるため、参照型を要素に持つ配列では参照のみがコピーされます。 そのため、ジャグ配列の複製を行うと、複製元と複製後のジャグ配列内における2段目以降はどちらも同一のインスタンスを参照する事になります。
Cloneメソッドと簡易コピーについてより詳しくはオブジェクトの複製で解説しています。