配列をコピーする1つの方法にSystem.ArrayクラスのCopyToメソッドを使う方法があります。
aryAからaryBへは配列の値をコピーしているため、コピー後にaryAの値を変えてもaryBの値は変化しません。
aryCはaryAの先頭要素への参照を保持するため、代入後にaryAの値を変えると、aryCの値も変化します。
static void Main(string[] args)
{
int[] aryA = {3, 7, 1, 5, 8};
int[] aryB = new int[aryA.Length];
int[] aryC = null;
aryA.CopyTo(aryB, 0);
aryA[0] = 15;
for(int i=0; i<aryB.Length; i++)
{
Console.WriteLine("aryB[{0}]={1}", i.ToString(), aryB[i].ToString());
}
Console.WriteLine(string.Empty);
aryC = aryA;
aryA[0] = 10;
for (int i = 0; i<aryC.Length; i++)
{
Console.WriteLine("aryC[{0}]={1}", i.ToString(), aryC[i].ToString());
}
}
上のプログラムを実行すると以下のような結果となります。
aryB[0]=3
aryB[1]=7
aryB[2]=1
aryB[3]=5
aryB[4]=8
aryC[0]=10
aryC[1]=7
aryC[2]=1
aryC[3]=5
aryC[4]=8