#c_sharp #foreach
Коллекция выглядит так: public class myList : List{ } Мне нужно повторять цикл до тех пор, пока он добавляет новые элементы: do { newObjectAdded = false; foreach (myClass obj in myList) { //... if (some_condition) { myList.Add(newObj); newObjectAdded = true;} //... } } while (newObjectAdded); После того, как в лист добавится элемент, в строке foreach (myClass obj in myList) я получаю ошибку - коллекция была изменена, невозможно выполнить операцию перечисления. Можно заменить foreach на цикл с итератором, но от этого обращение к объектам станет довольно громоздким. Ещё есть вариант с заменой списка на LinkedList, но это ещё хуже, в данном случае. Существует ли какой-то более элегантный способ?
Ответы
Ответ 1
Сам разобрался. Достаточно написать: foreach (myClass obj in myList.ToArray()) {
Комментариев нет:
Отправить комментарий