Sie rufen nur RemoveAt
10 mal auf. Wenn i
10 erreicht, wird auch ID.Count
10 sein. Sie könnten dies auf folgende Weise beheben:
Dies ist jedoch eine O (n 2 ) Operation, da das Entfernen eines Eintrags vom Anfang der Liste beinhaltet, alles andere zu kopieren.
Effizienter (O (n)):
%Vor%oder gleichwertig aber einfacher:
%Vor% Aber die Verwendung von ID.Clear()
ist wahrscheinlich effizienter als all diese, obwohl es auch O (n) ist.
Nach dem Entfernen von 10 Elementen, ID.Count() == 10
und i == 10
stoppt die Schleife.
Verwenden Sie ID.Clear()
, um alle Elemente im Array zu entfernen Liste.
Verwenden Sie die Methode clear ()
oder
ändern Sie ID.RemoveAt(i);
in ID.RemoveAt(0);
Immer wenn ein Element aus der Sammlung entfernt wird, ändert sich auch dessen Index. Wenn Sie also ID.RemoveAt(0);
sagen, wird das Element an Index 1 jetzt in den Index 0 verschoben. Also müssen Sie wieder das gleiche Element entfernen (wie zum Beispiel die Warteschlange). bis du das letzte Element erreichst. Wenn Sie jedoch alle Elemente auf einmal entfernen möchten, können Sie besser die Methode Clear () verwenden.
Ihr Code tut:
%Vor%Im Allgemeinen entfernt Ihre Methode jedes zweite Element aus der Liste.
Verwenden Sie stattdessen ArrayList.Clear
, wie andere bereits erwähnt haben.
Tags und Links c#