Possible Duplicate:
How to modify or delete items from an enumerable collection while iterating through it in C#Comment puis-je faire ce spécial foreach itérateur?
Écoutez, je ne veux pas connaître le foreach de base. Je parle de celui qui contrôle cette erreur:
"The enumerator is not valid because the collection changed."
Ce qui se produit quand je fais ceci:
foreach(Image image in images)
{
if(...)
{
images.remove(image)
}
}
Je crois qu'il ya un itérateur spécial qui gèrent bien cela, comme Java a. Alors, comment puis-je faire cela en C# s'il vous plaît? Merci!
Mais si je fais cela, je crois que je vais perdre l'objet suivant, étant donné que j'utilise Canvas. Par exemple: Image que j'ai supprimé l'objet de l'index 2. Donc l'objet de l'index 2 se déplacera à l'index 2 en tant que liste. Donc, quand j'essaie d'obtenir la valeur suivante qui est l'index 3, l'ancien objet de l'index 3 sera à l'index 2. Donc je vais le perdre. – Seva
@Alan, c'est le but de la ligne '--i;'. Ceci ajuste l'index de sorte qu'aucun élément ne soit manqué. –
c'est ce que corrige le '--i'. La technique de décrémentation lors du retrait est intéressante. D'habitude, j'écrivais ma boucle pour revenir en arrière et parfois faire un double test. – CodesInChaos