По названию - есть ли хорошие встроенные опции в C # /. NET для безотказной итерации по IList или IDictionary?
Где я сталкиваюсь с проблемами - с кодом, похожим наследующее:
IList<Foo> someList = new List<Foo>();
//...
foreach (Foo foo in someList) {
if (foo.Bar) {
someList.remove(foo);
}
}
, которое выдает следующее после первого раза foo.Bar верно:
Type: System.InvalidOperationException
Message: Collection was modified; enumeration operation may not execute.
Я знаю, что простой обходной путь - foreach (Foo foo in new List<Foo>(someList))
, но это раздражаетдолжен помнить, чтобы сделать это каждый.не замужем.время.это происходит.
Исходя из фона Java, это то, что можно аккуратно обработать с помощью CopyOnWriteArrayList / ConcurrentHashMap (я знаю, что есть другие штрафы, связанные с использованием этих списков.) Есть ли эквивалент вC #, о котором я просто не знаю?