Страницы

Поиск по вопросам

понедельник, 4 февраля 2019 г.

Как лучше исправить 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, но это ещё хуже, в данном случае. Существует ли какой-то более элегантный способ?


Ответ

Сам разобрался. Достаточно написать: foreach (myClass obj in myList.ToArray()) {

Комментариев нет:

Отправить комментарий