Wenn die iterative generische Liste die Operation ausführt, die möglicherweise das Element entfernen muss, ist es wichtig, den entsprechenden Iterationsmodus auszuwählen, um gemeinsame Fallen zu vermeiden. Beispielsweise führt die Verwendung von
im Zyklus zu Abnormalitäten, da die Sammlung während des Aufzählungsprozesses modifiziert wird.
foreach
stetige Lösung .Remove(element)
Um dieses Problem zu lösen, wird empfohlen, die Liste cyclische Reverse -Iteration -Liste zu verwenden. Diese Methode stellt sicher, dass die aktuelle Position im Set beim Entfernen von Elementen genau ist.
Beispiel: for
for (int i = safePendingList.Count - 1; i >= 0; i--) { // 处理元素 // safependingList.RemoveAt(i); }
<替> Alternative Methode
Eine andere Wahl besteht darin,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));
<化> vereinfachte Demonstration:
RemoveAll
safePendingList.RemoveAll(item => item.Value == someValue);
Das obige ist der detaillierte Inhalt vonWie kann man Elemente sicher und effizient aus einer generischen Liste entfernen, während ich iteriert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!