Maison >développement back-end >C++ >Comment puis-je ajouter efficacement des éléments à une liste lors d'une boucle C# « foreach » ?

Comment puis-je ajouter efficacement des éléments à une liste lors d'une boucle C# « foreach » ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-27 13:26:09938parcourir

How Can I Efficiently Add Items to a List During a C# `foreach` Loop?

Modification des listes dans foreach Boucles en C #: meilleures pratiques

Alors que C # .NET 4.0 et les versions ultérieures ne lancent pas des exceptions lors de la modification des énumérables à l'intérieur des boucles foreach, l'ajout d'objets directement dans la boucle peut conduire à un comportement imprévisible. Cet article explore des méthodes efficaces et fiables pour ajouter des éléments à une liste pendant l'itération.

L'approche commune de l'utilisation d'un IList temporaire comme tampon fonctionne, mais n'est pas toujours la solution la plus efficace ou la plus élégante. Le problème de base découle de la nature immuable des collections accessibles via foreach. Comme MSDN clarifie: foreach est conçu pour récupérer les données; L'ajout ou la suppression des éléments pendant l'itération est découragé en raison d'incohérences potentielles.

Pourquoi éviter la modification directe dans foreach?

La boucle foreach itère sur un instantané de l'état de la collection au début de la boucle. L'ajout d'articles modifie directement la collection sous-jacente, provoquant potentiellement l'itérateur à sauter des éléments ou à rencontrer des exceptions inattendues.

Approche recommandée: en utilisant une boucle for

Pour ajouter ou supprimer des éléments pendant l'itération, une boucle for fournit la solution la plus prévisible et la plus efficace. Il offre un contrôle direct sur l'index et permet des modifications sûres.

Collections simultanées: un cas spécial

L'utilisation de collections simultanées (comme ConcurrentBag ou ConcurrentQueue) est une exception. Ces collections sont conçues pour les modifications de filetage, et l'ajout d'articles pendant l'itération peut être autorisé, mais cela doit être soigneusement considéré et utilisé uniquement lorsque la sécurité des threads est primordiale.

En résumé, bien que techniquement possible d'ajouter des éléments lors d'une boucle foreach dans les nouvelles versions C #, il est généralement de la meilleure pratique d'utiliser une boucle for à cet effet de maintenir la clarté du code, l'efficacité et d'éviter des résultats inattendus. Les collections simultanées fournissent une alternative pour des scénarios multi-threads spécifiques.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn