![]() |
empty Generic List
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mich gewundert, dass bei debuggen einer for each Schleife bei einer leeren generischen Liste ein Objekt freigegeben wird.
Im Screenshot habe ich das mal zusammengefasst. Sollte nicht eigentlich der Compiler den Schritt überspringen, wenn die Liste leer ist? |
AW: empty Generic List
Das ist der Enumerator der FOR-IN-Schleife, welcher da freigegeben wird.
Der, welcher da in GetEnumerator erzeugt wurde. :zwinker: PS: Nimm mal Self.ClassName in die zu überwachenden Variablen auf. |
AW: empty Generic List
Ich dachte, der Compiler würde dann gar nicht erst soweit in die tiefere Ebene gehen, wenn die Liste eh leer ist.
|
AW: empty Generic List
Es muß der Enumerator erstmal erstellt werden, damit Delphi ihn Fragen kann, ob was drin ist ;)
Die FOR-IN-Schleife ist intern eigentlich eine While-Schleife und bei Objekten wird dieses
Delphi-Quellcode:
vom Compiler quasi in das übersetzt
for x in List do
DoIt(x);
Delphi-Quellcode:
temp := List.GetEnumerator;
try while temp.MoveNext do DoIt(temp.Current); finally temp.Free; end; Ja, wenn Emba mal ein bissl auf die Community hören würde, dann hätte ich beim GetEnumerator z.B. ein NIL, als Result, vorgeschlagen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz