Вопросы к Поиску с Алисой
Foreach может не работать с коллекциями, где требуется изменяемая переменная, потому что цикл предназначен для чтения данных из коллекции. ci-sharp.ru
Перечислители, к которым относится и foreach, можно использовать только для чтения, но не для изменения базовой коллекции. stackoverflow.com social.msdn.microsoft.com Если в коллекцию вносятся изменения, такие как добавление, модификация или удаление элементов, перечислитель становится безвозвратно недействительным и его поведение не определено. stackoverflow.com
Таким образом, попытка изменить коллекцию во время итерации через foreach приведёт к ошибке во время выполнения. ci-sharp.ru Если нужно внести изменения в коллекцию во время её перебора, следует использовать традиционный цикл for или создать новую коллекцию. ci-sharp.ru
Также важно помнить, что foreach работает с копией элемента коллекции, а не с самим элементом (в случае значимых типов). ci-sharp.ru Это означает, что изменение переменной в цикле foreach не повлияет на исходную коллекцию. ci-sharp.ru