Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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# 收集被修改;I';时引发枚举操作时,枚举操作可能不会执行;我不会在循环中修改集合_C# - Fatal编程技术网

C# 收集被修改;I';时引发枚举操作时,枚举操作可能不会执行;我不会在循环中修改集合

C# 收集被修改;I';时引发枚举操作时,枚举操作可能不会执行;我不会在循环中修改集合,c#,C#,我是一名计算机科学专业的学生,对编码真的不太了解,所以如果有任何帮助,我将不胜感激 我已经看过很多其他的例子,说明这个错误是在其他代码中抛出的——我知道它是在迭代过程中试图更改集合时发生的。但我没有那样做;PrevGen=NowGen行在foreach循环之外,所以我不明白它为什么会抛出错误 代码: intmonths=int.Parse(Console.ReadLine()); 控制台写入线(“寿命”); int lifespan=int.Parse(Console.ReadLine());

我是一名计算机科学专业的学生,对编码真的不太了解,所以如果有任何帮助,我将不胜感激

我已经看过很多其他的例子,说明这个错误是在其他代码中抛出的——我知道它是在迭代过程中试图更改集合时发生的。但我没有那样做;
PrevGen=NowGen行在foreach循环之外,所以我不明白它为什么会抛出错误

代码:

intmonths=int.Parse(Console.ReadLine());
控制台写入线(“寿命”);
int lifespan=int.Parse(Console.ReadLine());
List PrevGen=新列表{0};
List NowGen=新列表();
控制台写入线(前置计数);
对于(int i=0;i
PrevGen = NowGen;
List
是一种引用类型,在该赋值之后,PrevGen引用NowGen实例。 它们成为指向同一实例的两个变量

该错误在foreach内部抛出,因为您试图在枚举同一实例时添加项

我的建议是删除该行代码,并用包含在NowGen中的项目替换PrevGen中的所有项目,例如:

PrevGen.Clear();
PrevGen.AddRange(NowGen);

希望有帮助!

您是否设置了断点,哪一行会抛出错误?这是因为PrevGen=NowGen。您将它们都设置为相同的对象。因此,如果您修改了一个,另一个也会被修改。
PrevGen.Clear();
PrevGen.AddRange(NowGen);