Когда я изменил коллекцию, с которой я перебирал foreach
, я получил исключение. Поэтому мне просто интересно, как это обнаруживает foreach
(или время выполнения). Можно ли сделать это с помощью общего объекта?Как можно узнать, что итерационная коллекция была изменена?
10
A
ответ
15
Сама коллекция должна ее обнаружить. В стандартных библиотечных коллекциях это достигается за счет внутреннего номера версии, который изменяется каждой операцией и проверяется итератором на каждой итерации (т.е. каждый раз, когда вы вызываете MoveNext
, он проверяет, что номер версии такой же, как и когда итератор был создан).
Смежные вопросы
- 1. «Коллекция была изменена ...» Проблема
- 2. InvalidOperationException: коллекция была изменена
- 3. System.InvalidOperationException: Коллекция была изменена
- 4. Коллекция была изменена ошибка .NET2.0
- 5. InvalidOperationException: коллекция была изменена; Перечисление
- 6. Коллекция была изменена в петле foreach C#
- 7. Коллекция была изменена после того, как была зарегистрирована ошибка счетчика
- 8. Коллекция была изменена исключение из datatable.Copy()
- 9. C# цикл, где коллекция была изменена
- 10. "Коллекция была изменена;" ... но это было не
- 11. Коллекция была изменена во время перечисления
- 12. Коллекция была изменена, перечисление не может продолжать
- 13. EF Code First: Коллекция была изменена
- 14. Коллекция была изменена при добавлении в коллекцию
- 15. Помощь с F #: «Коллекция была изменена»
- 16. Как узнать, где была изменена база данных
- 17. Недействительная операция Исключительная коллекция была изменена C#
- 18. Коллекция была изменена исключение linq-to-objects
- 19. Отслеживание, когда коллекция была изменена (ConcurrentModificationException)
- 20. Коллекция была изменена IGrouping of Invoices
- 21. jQuery итерационная коллекция с
- 22. Как узнать, была ли форма изменена
- 23. Как узнать, когда последняя страница была изменена?
- 24. Как узнать, была ли изменена модификация enyo.Model?
- 25. Итерационная коллекция в муле
- 26. Коллекция модифицирована исключение выбрасывается, если коллекция не была изменена
- 27. Как узнать, что системная дата была изменена (вручную или автоматически)?
- 28. Как узнать, когда коллекция была отредактирована?
- 29. Чтобы узнать, была ли изменена страница * .aspx
- 30. Как angular.js обнаружил, что модель была изменена
Я не уверен в C#, но в Java world foreach construct - это просто синтаксический клей для обычного итератора ... Поэтому, если коллекция изменяется во время итерации, возникает ConcurrentModificationException. Похоже, что это именно так. –