C# IEnumerable给出错误异常处理can';不读列表

C# IEnumerable给出错误异常处理can';不读列表,c#,ienumerable,C#,Ienumerable,我想让代码显示有多少辆车以及每辆车里有哪些动物。这是我的错误: System.invalidoOperationException:“集合已更改。可能无法执行库存处理。” 代码如下: public IEnumerable GetAnimals() { 返回动物; } 公共作废检查器(列表动物) { foreach(列表动物中的动物) { foreach(货车中的货车) { foreach(动物马车中的动物。GetAnimals()) { 如果(wago.StartCapacity如果您希望在循

我想让代码显示有多少辆车以及每辆车里有哪些动物。这是我的错误:

System.invalidoOperationException:“集合已更改。可能无法执行库存处理。”

代码如下:

public IEnumerable GetAnimals()
{
返回动物;
}
公共作废检查器(列表动物)
{
foreach(列表动物中的动物)
{
foreach(货车中的货车)
{
foreach(动物马车中的动物。GetAnimals())
{

如果(wago.StartCapacity如果您希望在循环时修改集合,我将使用
列表
对象,而不是
IEnumerable

一些示例代码如下所示:

List<Wagons> Wagons = new List<Wagons>
Wagons.AddAnimal(animal1);

foreach(Animal animal in Wagons.GetAnimals(){
   animal.Eater = Eater.herbivore;
}
List Wagons=新列表
四轮马车。动物(动物1);
foreach(马车里的动物{
食草动物=食草动物;
}
同时查看您的代码:


if(wagg.StartCapacity实际上,在循环时不能修改列表。
您需要创建另一个对象并分别添加马车和动物。

如果您还不理解,请尝试此操作并发表评论。

您不能在使用
foreach
中的
对列表进行迭代时修改列表

例如:

foreach(货车中的货车)
{
货车waggi=新货车();
Wagons.Add(waggi);
}
这是行不通的

如果你使用例如

//这是不获取无止境循环所必需的(因为列表的长度
//每次对Wagons调用Add()方法后增加。)
int wagonCount=货车。计数;
for(int i=0;i
这会奏效的

我的代码工作示例(据我所知,您想要做的是: 这里:


我还建议您根据Microsoft的定义检查您的代码样式:。

不允许修改您正在迭代的
IEnumerable
Wagons
在您的情况下可能重复。我尝试更改else代码时,我得到了相同的错误,列表无法读取,但您迭代wago是什么意思ns??这与装置无关testing@AndreiDragotoniu当前位置你是什么意思?我更改了if/else语句,但我仍然有一个问题,我真的不太明白。我列出了一个清单,所以我制作了一个列表动物,但列表动物只是为了存储它们,然后将它们放入wagonLike NMSaiyed说:当使用
foreach
in
操作符对列表进行迭代时,不能将对象添加到列表中。我将尝试回答您的问题。我遇到了一个问题,因为列表车从h 0那么WagoCount为0,循环将执行一次,然后完成如何求解?我希望代码显示有多少辆车,以及每辆车中有哪些动物
-->我不太明白你想做什么。你提供的代码不计算货车,也不计算动物。你是e正在尝试将动物添加到马车中。请提供更多详细信息?