Maison > développement back-end > C++ > Comment puis-je supprimer en toute sécurité les éléments d'une liste pendant l'itération en C #?

Comment puis-je supprimer en toute sécurité les éléments d'une liste pendant l'itération en C #?

Linda Hamilton
Libérer: 2025-01-31 01:56:09
original
252 Les gens l'ont consulté

How Can I Safely Remove Elements from a List During Iteration in C#?

Retirer efficacement les éléments d'une liste C # pendant l'itération

Modification d'une liste tout en itérant à travers lui en utilisant des méthodes standard conduit souvent à InvalidOperationException des erreurs. Cet article présente des solutions propres pour supprimer en toute sécurité les éléments d'un List<T> basé sur une condition.

Le problème commun survient lors de l'utilisation de List<T>.Remove() ou List<T>.RemoveAt() dans une boucle foreach ou d'une boucle standard for. Index le changement provoque des problèmes.

Solution 1: itération inverse

itérer en arrière à l'aide d'une boucle for Évite les problèmes d'index:

var list = new List<int>(Enumerable.Range(1, 10));
for (int i = list.Count - 1; i >= 0; i--) {
    if (list[i] > 5) {
        list.RemoveAt(i);
    }
}
list.ForEach(i => Console.WriteLine(i));
Copier après la connexion

Cette méthode commence à partir de la fin, en supprimant les éléments sans affecter les indices suivants.

Solution 2: RemoveAll() Méthode

Une approche plus concise et lisible utilise la méthode RemoveAll() avec un prédicat:

var list = new List<int>(Enumerable.Range(1, 10));
Console.WriteLine("Before:");
list.ForEach(i => Console.WriteLine(i));
list.RemoveAll(i => i > 5);
Console.WriteLine("After:");
list.ForEach(i => Console.WriteLine(i));
Copier après la connexion

Cela supprime élégamment tous les éléments satisfaisant la condition donnée (i > 5 dans ce cas). Il est généralement préféré pour sa clarté et son efficacité.

Les deux méthodes fournissent des moyens fiables de supprimer les éléments d'une liste pendant l'itération, en empêchant les exceptions et en garantissant l'intégrité des données. La méthode RemoveAll() est souvent le choix préféré pour sa simplicité et sa lisibilité.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal