これは解決しようとしている問題の簡略版です。イムはList
にint[]
を追加しようとしているが、それは最後の反復から1でList
のすべての配列を更新します。何故ですか?そして、私はこの問題をどうやって解決しますか?これは単なる例の1 int
であれば問題ありません。配列にint配列を追加するだけで、配列の最後のバージョンが使用されます
intArray = new int[9];
for (int i = 0; i < 9; i++)
{
intArray[i] = i;
}
Test.Add(intArray);
for (int i = 0; i < 9; i++)
{
intArray[i] = i * 2;
}
Test.Add(intArray);
foreach (var item in Test)
{
for (int i = 0; i < 9; i++)
{
Console.WriteLine(item[i]);
}
}
Console.ReadKey();
}
public static int[] intArray { get; set; }
public static List<int[]> Test = new List<int[]>();
あなたはただ1つの配列を作成しています。あなたのリストには、同じ配列への参照がたくさん含まれています。今、参照型について学ぶのに良い時期です:http://jonskeet.uk/csharp/references.htmlを見てください。 –
各 'Add'の後に、この行を繰り返すことによって新しい配列をインスタンス化します。' intArray = new int [9]; ' –