Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将整型数组添加到不带整型数组的列表中只需要数组的最后一个版本_C#_Arrays_List_Int - Fatal编程技术网

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[]
添加到
列表
,但它用上一次迭代中的数组更新了
列表
中的所有数组。为什么呢?我如何解决这个问题?例如,如果仅为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[]>();
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]