C# 将整型数组添加到不带整型数组的列表中只需要数组的最后一个版本
这是我试图解决的问题的简化版本。我正试图将一个C# 将整型数组添加到不带整型数组的列表中只需要数组的最后一个版本,c#,arrays,list,int,C#,Arrays,List,Int,这是我试图解决的问题的简化版本。我正试图将一个int[]添加到列表,但它用上一次迭代中的数组更新了列表中的所有数组。为什么呢?我如何解决这个问题?例如,如果仅为1int,则这不是问题 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 *
int[]
添加到列表
,但它用上一次迭代中的数组更新了列表
中的所有数组。为什么呢?我如何解决这个问题?例如,如果仅为1int
,则这不是问题
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[]>();
intArray=newint[9];
对于(int i=0;i<9;i++)
{
intArray[i]=i;
}
测试。添加(intArray);
对于(int i=0;i<9;i++)
{
intArray[i]=i*2;
}
测试。添加(intArray);
foreach(测试中的var项目)
{
对于(int i=0;i<9;i++)
{
控制台写入线(第[i]项);
}
}
Console.ReadKey();
}
公共静态int[]intArray{get;set;}
公共静态列表测试=新列表();
使用new
关键字创建intArray
仅一次。那么只有一个参考。之后,您可以多次将intArray
引用添加到集合List
试试这个
intArray = new int[9];
for (int i = 0; i < 9; i++)
{
intArray[i] = i;
}
Test.Add(intArray);
intArray = new int[9]; // create new intArray here
for (int i = 0; i < 9; i++)
{
intArray[i] = i * 2;
}
Test.Add(intArray);
intArray=newint[9];
对于(int i=0;i<9;i++)
{
intArray[i]=i;
}
测试。添加(intArray);
intArray=新整数[9];//在此创建新intArray
对于(int i=0;i<9;i++)
{
intArray[i]=i*2;
}
测试。添加(intArray);
将intArray对象添加到arraylist后,只需创建该对象的另一个对象即可
intArray=新整数[长度]
希望它能起作用您只创建了一个数组。您的列表包含对同一数组的大量引用。现在是学习引用类型的好时机:)请参见示例。在每次添加
后,通过重复这一行来实例化一个新数组intArray=new int[9]代码>