Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi empty Generic List (https://www.delphipraxis.net/176933-empty-generic-list.html)

stahli 5. Okt 2013 10:31

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?

himitsu 5. Okt 2013 10:33

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.

stahli 6. Okt 2013 14:54

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.

himitsu 6. Okt 2013 15:23

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:
for x in List do
  DoIt(x);
vom Compiler quasi in das übersetzt
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 21:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz