Die beste Praxis, Elemente aus der generischen Liste sicher und effizient zu entfernen
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
<code class="language-csharp">for (int i = safePendingList.Count - 1; i >= 0; i--) { // 处理元素 // safependingList.RemoveAt(i); }</code>
Alternative Methode
Eine andere Wahl besteht darin,<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>
vereinfachte Demonstration:
RemoveAll
<code class="language-csharp">safePendingList.RemoveAll(item => item.Value == someValue);</code>
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!