Duplicate
Изменение коллекции при итерации через нее
У кого-нибудь хороший шаблон, позволяющий мне обойти невозможность удалить объекты, когда я прокручиваю перечислимую коллекцию (например, IList или KeyValuePairs в словаре)
Например, следующее не выполняется, поскольку оно изменяет список, который перечислит во время foreach
foreach (MyObject myObject in MyListOfMyObjects)
{
if (condition) MyListOfMyObjects.Remove(myObject);
}
В прошлом я использовал два метода.
Я заменил foreach на обратный цикл for (чтобы не изменять любые индексы, которые я перебираю, если я удаляю объект).
Я также попытался сохранить новую коллекцию объектов для удаления внутри цикла, затем прокрутил эту коллекцию и удалил объекты из исходной коллекции.
Они работают отлично, но не чувствуют себя хорошо, и мне было интересно, если кто-нибудь придумает более элегантное решение проблемы