Heim > Backend-Entwicklung > C++ > Wie kann ich Elemente während der Iteration in C#sicher aus einer Liste entfernen?

Wie kann ich Elemente während der Iteration in C#sicher aus einer Liste entfernen?

Linda Hamilton
Freigeben: 2025-01-31 01:56:09
Original
181 Leute haben es durchsucht

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

effizientes Entfernen von Elementen aus einer C# -Liste während der Iteration

Ändern einer Liste beim Iterieren mit Standardmethoden führt häufig zu InvalidOperationException Fehler. In diesem Artikel werden saubere Lösungen vorgestellt, um Elemente aus einem List<T> basierend auf einer Bedingung sicher zu entfernen.

Das gemeinsame Problem ergibt sich bei der Verwendung List<T>.Remove() oder List<T>.RemoveAt() in einer foreach -Schleife oder einer Standard for. Indexwechsel verursacht Probleme.

Lösung 1: Reverse Iteration

nach hinten unter Verwendung einer for -Schleife vermieden Indexprobleme:

<code class="language-csharp">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));</code>
Nach dem Login kopieren

Diese Methode beginnt am Ende und entzieht Elemente, ohne nachfolgende Indizes zu beeinflussen.

Lösung 2: RemoveAll() Methode

ein prägnanterer und lesbarerer Ansatz ist die Verwendung der RemoveAll() -Methode mit einem Prädikat:

<code class="language-csharp">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));</code>
Nach dem Login kopieren

Dies entfernt elegant alle Elemente, die die angegebene Bedingung erfüllen (i > 5 in diesem Fall). Es wird im Allgemeinen für seine Klarheit und Effizienz bevorzugt.

Beide Methoden bieten zuverlässige Möglichkeiten, Elemente während der Iteration aus einer Liste zu entfernen, Ausnahmen zu verhindern und die Datenintegrität sicherzustellen. Die RemoveAll() -Methode ist häufig die bevorzugte Wahl für die Einfachheit und Lesbarkeit.

Das obige ist der detaillierte Inhalt vonWie kann ich Elemente während der Iteration in C#sicher aus einer Liste entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage