【发布时间】:2017-09-16 02:12:59
【问题描述】:
这是我试图解决的问题的简化版本。我试图将int[] 添加到List,但它会使用上一次迭代中的数组更新List 中的所有数组。这是为什么?我该如何解决这个问题?例如,如果它只是 1 个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[]>();
【问题讨论】:
-
您只创建了一个数组。您的列表包含对同一数组的大量引用。现在是了解引用类型的好时机 :) 例如,请参阅 jonskeet.uk/csharp/references.html。
-
在每个
Add之后,通过重复这行intArray = new int[9];来实例化一个新数组