ごまなつ Blog

楽しく働ける世界を目指して

【C#】配列のコピーは=でやってはいけない

基本的な話です。

配列aを配列bにコピーして、その後配列bの要素を変更したいとします。

a[3]=[1,2,3]
b[3];
a=b;
b[3]= b[3]+2;

普通にコピーするだけならこれでいいだろ、と思うのですが、これでは参照ごとコピーされ、a[3]の値も変更されてしまいます。つまり、a=bとした場合、aが変更されたらbが、bが変更されたらaも変更されてしまいます。よって、どちらも変更したい場合でなければ、Array.Copyを使いましょう。

Array.Copy(コピー元、コピー先、長さ)

この動作を知っているとなにかの役に立つかもしれません。