Код: Выделить всё
var numbers = new List { 1, 2, 3, 4, 5 };
foreach (var n in numbers)
{
if (n % 2 == 0)
{
numbers.Remove(n);
}
}
"Коллекция была изменена; операция перечисления не может быть выполнена". Я ожидал, что цикл продолжит итерацию и удалит совпадающие элементы аналогично тому, как работает удаление элементов в цикле for. Я знаю, что использование цикла for или вызов RemoveAll работает, но я хочу понять, почему foreach конкретно не позволяет изменять коллекцию. Это поведение специфично для List или оно применимо ко всем реализациям IEnumerable?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ption-in-c
Мобильная версия