Я пытаюсь перебрать коллекцию элементов, выполнить действие и затем удалить элемент с текущим индексом.
Способ, которым я реализовал это в настоящее время, выглядит так:
foreach (CormantRadPane pane in GetPanes().ToList())
{
pane.Clear();
StateManager.Remove(pane);
LayoutManager.Instance.RegisteredPanes.Remove(pane);
Items.Remove(pane);
}
Вызывая ToList, я создаю копию коллекции, но сохраняю ссылку на каждый объект в первой коллекции.Это позволяет мне перебирать возвраты из коллекции GetPanes без «технического» изменения коллекции.
Это явно склонно к серьезным трудностям при обнаружении ошибок.Каков стандартный способ выполнения такой логики чистым способом, но это также более ясно о хитросплетениях происходящего?
Я немного осмотрелся и увидел такие вещи, как использование цикла for ив обратном порядке по списку, но это кажется действительно громоздким.Мои чувства примерно одинаковы: я оставляю второй список «удаляемых» элементов, а затем перебираю этот список после завершения первого цикла, удаляя каждый объект, найденный во втором списке.
Как вы справляетесь с этим?Спасибо.