Если вы хотите изменить коллекцию во время цикла, я бы использовал объект List
вместо IEnumerable
.
Пример кода может быть таким:
List<Wagons> Wagons = new List<Wagons>
Wagons.AddAnimal(animal1);
foreach(Animal animal in Wagons.GetAnimals(){
animal.Eater = Eater.herbivore;
}
Также смотрит на ваш код:
if (wagon.StartCapacity <= wagon.MaxCapacity &&
animal.Formaat + wagon.StartCapacity <=
wagon.MaxCapacity && wagonAnimal.Eater == Eater.carnivoor &&
animal.Eater == Eater.herbivoor && animal.Formaat >= wagonAnimal.Formaat)
{
wagon.AddAnimal(animal);
Wagons.Add(wagon);
} else {
wagon.AddAnimal(animal);
Wagons.Add(wagon);
}
Этот оператор if / else выполняет точно такой же код, поэтому вам действительно не нужен if / else, вы можете просто добавить животное и добавить универсал.
Наконец, не должен ли параметр вашего метода принимать List
или IEnumerable
коллекцию вагонов, а не животных, чтобы вы могли проходить по вагонам и просматривать животных в вагонах?