Sie können nicht verwenden a foreach
zum Entfernen von Elementen während der Aufzählung, Sie erhalten zur Laufzeit eine Ausnahme.
Sie könnten List.RemoveAll
verwenden:
oder, wenn es sich nicht um eine List<T>
, sondern um eine beliebige Sequenz handelt, LINQ:
Wenn Sie sicher sind, dass nur ein Element mit dieser Nummer vorhanden ist oder Sie ein Element maximal entfernen möchten, können Sie entweder den in der anderen Antwort vorgeschlagenen for-loop-Ansatz verwenden oder:
%Vor%Der Link zu der anderen Frage, die ich geschrieben habe, legt nahe, dass Sie eine Auflistung während der Aufzählung in C # 4 und höher ändern können. Nein, das kannst du nicht. Dies gilt nur für die neuen gleichzeitigen Sammlungen .
Sie können foreach nicht verwenden, um Objekte aus der Sammlung zu entfernen. Dies wird eine Ausnahme auslösen, dass die Sammlung geändert wird.
Sie können es mit
durchführen %Vor% Anderenfalls verwenden Sie Remove/RemoveAll
like Tim Schmelter
show.
Sie können eine foreach-Schleife verwenden, um ein Element aus einer Liste zu entfernen. Wichtig ist, dass Sie mit break die Schleife anhalten, sobald Sie das Element entfernt haben. Wenn die Schleife fortgesetzt wird, nachdem ein Element aus der Liste entfernt wurde, wird eine Ausnahme ausgelöst.
%Vor%Dies funktioniert jedoch nur, wenn nur ein Objekt wie in Ihrem Fall entfernt werden soll.
Sie können den Index entfernen, wenn der Wert den Kriterien
entspricht %Vor%