Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#31

AW: Warnung vor massivem Einsatz von Generics in Delphi

  Alt 18. Dez 2024, 10:17
Wenn man die Unit C erstellt, TList<Integer> dort einfügt, ihr einen bestimmten Typnamen gibt und diese Unit und diesen Typ verwendet, greift das Ganze auf die allgemeine Typverwendung zurück. Der Unterschied ist meines Wissens nach sehr signifikant
Leider falsch.
Das stimmt, aber wenn man eine eigene Klasse ableitet wie hier...
...
Da das Klassen sind, kann man doch auch noch anders ableiten.
Delphi-Quellcode:
TIntegerList = TList<Integer>;

TCountList = class(TIntegerList);
TWidthList = class(TIntegerList);
TLengthList = class(TIntegerList);
Äh - na klar geht auch. Vermutlich sogar etwas schöner.
Und hilft das?
Dann funktioniert es. Dann ist die konsumierende kompilierte Unit wieder entsprechend kleiner. Dafür reicht auch:
Delphi-Quellcode:
TCountList = class(TList<Integer>);
TTextList = class(TList<string>);
Hintergrund ist, dass entscheidend ist, wo der generische Parameter aufgelöst wird. Diese DCU enthält entsprechend den Code. Wenn man einen so aufgelösten abgeleiteten Typ ohne generischen Parameter anderswo verwendet, enthält die betreffende Unit auch nicht mehr den Code der ursprünglichen generischen Klasse, selbst wenn man weitere Klassen davon ableitet.
Sebastian Jänicke
AppCentral

Geändert von jaenicke (18. Dez 2024 um 10:22 Uhr)
  Mit Zitat antworten Zitat