0

のような配列を宣言しました

string[] arr1;
string[] arr2;

ある時点で、その値を割り当てます

arr1 = new string[] { "value1" , "Value2 };
arr2 = arr1;

その後、arr1の値を次のように変更しています

arr1[0]="value3";
arr1[1]="value4";

arr2 をチェックすると、arr1 のこれらの変更も反映されます。

arr2[0] value is "value3";
arr2[1] value is "value4";

どのように起こっているのですか?

4

2 に答える 2

6

配列は .NET の参照型です。あなたがしたときarr2 = arr1、両方の変数がメモリ内の同じ配列を指すようにしました。一方の要素への変更は、他方に直接反映されます。

配列のコピーを作成するには、次のArray.Cloneメソッドを使用します。

arr2 = (string[])arr1.Clone();

またはLinqのEnumerable.ToArray方法:

arr2 = arr1.ToArray();
于 2013-04-06T05:17:44.200 に答える
1

becausearr2は so への参照ですarr1soはメモリ内のarr2ポイントです。arr1へのすべての変更arr1は に反映されarr2ます。

于 2013-04-06T05:18:48.267 に答える