У меня есть код, который я хочу выглядеть следующим образом:
List<Type> Os;
...
foreach (Type o in Os)
if (o.cond)
return; // Quitting early is important for my case!
else
Os.Remove(o);
... // Other code
Это не работает, потому что вы не можете удалить из списка, когда находитесь внутри цикла foreach
над этим списком:
Есть ли общий способ решения проблемы?
При необходимости я могу переключиться на другой тип.
Вариант 2:
List<Type> Os;
...
while (Os.Count != 0)
if (Os[0].cond)
return;
else
Os.RemoveAt(0);
... // Other code
Ужасно, но это должно сработать.