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正在尝试将动物添加到马车中。请提供更多详细信息?