Modification de listes dans des foreach
boucles en C# : bonnes pratiques
Modifier une liste directement dans une boucle foreach
en C# peut entraîner un comportement inattendu. Bien que C#/.NET 4.0 et les versions ultérieures autorisent certaines modifications dans des circonstances spécifiques (comme l'a noté Paul Jackson), cela n'est généralement pas recommandé. L'immuabilité inhérente de la collection utilisée dans une boucle foreach
est conçue pour éviter les effets secondaires imprévisibles, comme documenté par MSDN.
Les méthodes plus anciennes, telles que l'utilisation d'un IList
comme tampon temporaire, sont moins efficaces et moins élégantes.
Pourquoi éviter de modifier dans foreach
?
Le fonctionnement interne de la boucle foreach
crée une copie (ou un itérateur) de la collection. La modification de la collection d'origine lors de l'itération peut amener la boucle à sauter des éléments ou à lever des exceptions.
La méthode préférée : utiliser des for
boucles
Pour les scénarios nécessitant une modification de la collection source, une boucle for
offre un meilleur contrôle et une meilleure prévisibilité. Cette approche manipule directement les indices de la liste, évitant les problèmes associés à foreach
.
Collections simultanées : une exception
Bien que les collections simultanées dans les versions C# plus récentes permettent des modifications dans les boucles foreach
, il s'agit d'un cas spécialisé. Il est essentiel de comprendre que cette exception s'applique uniquement à ces types de collections spécifiques conçus pour un accès simultané.
En résumé : Bien que techniquement possible dans des situations limitées, la modification des listes dans les foreach
boucles est généralement déconseillée. L'utilisation de boucles for
pour les modifications de liste reste la meilleure pratique pour garantir la clarté et la prévisibilité du code et éviter les erreurs inattendues.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!