Lorsque j'ai modifié la collection que je parcourais avec foreach
, j'ai reçu une exception. Donc, je suis juste curieux de savoir comment foreach
(ou le runtime) détecter cela. Est-il possible de le faire avec un objet général?Comment savoir si la collection itérée a été modifiée?
10
A
Répondre
15
La collection elle-même doit le détecter. Dans les collections de bibliothèques standard, un numéro de version interne est modifié par chaque opération et vérifié par l'itérateur à chaque itération (c'est-à-dire que chaque fois que vous appelez MoveNext
, il vérifie que le numéro de version est le même l'itérateur a été créé).
Questions connexes
- 1. Comment puis-je savoir quand une collection a été modifiée?
- 2. Pour savoir si une page * .aspx a été modifiée
- 3. Aide avec F #: "Collection a été modifiée"
- 4. La collection a été modifiée exception linq-to-objects
- 5. La collection enfants Silverlight Canvas a été modifiée
- 6. Comment déterminer si une image a été modifiée?
- 7. Comment savoir si un formulaire a été modifié
- 8. Wicket: Prévenez si le modèle de page a été modifiée
- 9. Inside Interceptor.intercept(), comment savoir si l'action a déjà été exécutée?
- 10. Comment savoir si une classe a été instanciée
- 11. VCRedist - comment puis-je savoir si elle a été exécutée?
- 12. Comment savoir si une variable dans ASP a été déclarée
- 13. Comment savoir si une vue a été déplacée?
- 14. Comment savoir si un dossier a été définitivement supprimé
- 15. Comment puis-je détecter qu'une collection a été modifiée dans une entité ON SavingChanges?
- 16. La collection a été modifiée; l'opération d'énumération peut ne pas s'exécuter
- 17. NHibernate: la collection a été modifiée; opération d'énumération peut ne pas exécuter
- 18. "La collection a été modifiée, l'opération d'énumération peut ne pas s'exécuter" erreur sur le déploiement
- 19. C#: Comment puis-je résoudre "Collection a été modifiée" dans un rappel de rapport d'avancement BackgroundWorker?
- 20. Comment savoir ce qui a été cliqué?
- 21. Qu'est-ce qui provoque l'erreur "La collection a été modifiée après l'instanciation de l'énumérateur"?
- 22. La collection a été modifiée; opération d'énumération peut ne pas exécuter pour hashtable
- 23. La collection a été modifiée; opération d'énumération peut ne pas s'exécuter
- 24. C#: la collection a été modifiée; opération d'énumération ne peut pas exécuter
- 25. Comment savoir quelle MKPinAnnotation a été pressée?
- 26. Comment savoir quelle image a été cliquée?
- 27. Comment savoir onglet tabulation a été pressé?
- 28. Comment savoir quel itinéraire a été sélectionné?
- 29. Comment savoir si un énumérateur a atteint la fin de la collection en C#?
- 30. Pourquoi je reçois "La collection a été modifiée, l'opération d'énumération peut ne pas s'exécuter" si elle ne modifie pas la collection énumérée?
Je ne suis pas sûr de C#, mais dans Java world foreach construct est juste une colle syntaxique à l'itérateur normal ... Donc si la collection est modifiée pendant l'itération, ConcurrentModificationException est levée. Il semble que c'est exactement le cas ici. –