![]() |
Delphi-Version: 2010
Code von generischen Methoden/Klassen
Hallo zusammen,
und zwar programmiere ich seit geraumer Zeit mit Generics und bin echt zufrieden damit. Man kann sich das Leben sehr erleichtern (wobei ich gehört habe, das Generics unter D2009 nicht so toll waren :mrgreen: ). Jedenfalls habe ich noch nirgends gelesen, wie der Compiler generische Methoden und Klassen in Maschinencode umsetzt. Ich gehe mal davon aus, dass von den RTTI-Informationen regen Gebrauch gemacht wird, ansonsten kann ich mir das alles nicht so wirklich erklären, wie diese Magic sonst funktionieren sollte. Vielleicht kann der eine oder andere hierbei Licht ins Dunkel bringen :thumb: |
AW: Code von generischen Methoden/Klassen
Die generischen Parameter werden nicht erst zur Laufzeit ausgewertet, sondern direkt vom Compiler, der dann die entsprechenden spezialisierten Klassen erstellt. Stell es dir etwa so vor:
Delphi-Quellcode:
Der Compiler macht macht etwa das folgende daraus: (bzw. behandelt es so um's korrekter auszudrücken)
type
TGeneric<TGenParam> = class private Feld: TGenParam; end; ... var xyz: TGeneric<Integer>; abc: TGeneric<string>;
Delphi-Quellcode:
Zur Laufzeit muss da also überhaupt nix mehr passieren...
type
TGeneric_Integer = class private Feld: Integer; end; TGeneric_String = class private Feld: string; end; var xyz: TGeneric_Integer; abc: TGeneric_string; |
AW: Code von generischen Methoden/Klassen
Achso, mit dieser (mehr oder weniger) naiven Art hätte ich nicht gerechnet. Ich habe mir da mehr oder weniger ein gewissen Zauber vorgestellt, den es aber scheinbar nicht gibt. Herzlichen Dank für die Info.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:45 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 by Thomas Breitkreuz