vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Warnung: List.ForEach nicht mit List.Remove kombinieren! 
Autor: Manfred X
Datum: 04.12.11 12:26

Hallo!

Das dürfte genau der Grund sein, den ich oben schon beschrieben habe.

Die "ForEach"-Methode der List-Klasse durchläuft wohl eine
For Each ... Next-Schleife (von 0 bis Count-1).

Wenn zwei zu entfernende Elemente direkt hintereinander in der Liste
stehen, rutschen nach dem Entfernen des jeweils ersten Elements
die dahinter stehenden einen Index nach vorne und das Folge-Element
wird nicht erreicht. Im Beispiel werden deshalb vier zu entfenende
Elemente "übersprungen".

Jetzt muss man aber auch noch beachten, wie "Remove" funktioniert.
Bei jedem Aufruf von "Remove" wird das erste noch zu findende
Element in der Liste entfernt (nicht etwa das aktuell in der
ForEach-Schleife angelaufene!!)

Resultat: Es bleibt genau die Anzahl der übersprungenen, aber
eigentlich zu entfernenden Elemente AM ENDE der Liste übrig.

Zumindest spricht das Ergebnis dafür, dass diese Mutmaßungen,
die ich hier anstelle, tatsächlich zutreffen!!
(Vielleicht äußert sich mal jemand dazu, der Insider-Kenntnisse hat).

Allgemeines Fazit: In der als Delegat gerufenen Funktion bei
Ausführung der List.ForEach-Methode, sollten keine Veränderungen
der Listenelemente vorgenommen werden.

MfG
Manfred

Beitrag wurde zuletzt am 04.12.11 um 12:30:02 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
ArrayList Count2.2582Net01.12.11 21:21
Re: ArrayList Count1.759Preisser01.12.11 21:42
Re: ArrayList Count1.6982Net01.12.11 22:58
Re: ArrayList Count1.806Manfred X01.12.11 23:59
Re: ArrayList Count1.6792Net02.12.11 00:31
Re: ArrayList Count1.6232Net02.12.11 08:01
Re: ArrayList Count1.664ModeratorRalfE02.12.11 09:22
Warnung: List.ForEach nicht mit List.Remove kombinieren!1.667Manfred X03.12.11 20:09
Alternative: RemoveAll1.677Manfred X04.12.11 00:12
Re: Warnung: List.ForEach nicht mit List.Remove kombinieren!1.5852Net04.12.11 11:59
Re: Warnung: List.ForEach nicht mit List.Remove kombinieren!1.653Manfred X04.12.11 12:26
Re: Warnung: List.ForEach nicht mit List.Remove kombinieren!1.627Preisser04.12.11 12:36
Re: Warnung: List.ForEach nicht mit List.Remove kombinieren!1.6832Net04.12.11 12:43
Nachtrag zu RemoveAll()1.773Preisser04.12.11 13:47

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel