AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Code von generischen Methoden/Klassen

Ein Thema von s.h.a.r.k · begonnen am 7. Jun 2010 · letzter Beitrag vom 7. Jun 2010
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

Code von generischen Methoden/Klassen

  Alt 7. Jun 2010, 17:48
Delphi-Version: 2010
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 ). 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
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k ( 7. Jun 2010 um 17:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Code von generischen Methoden/Klassen

  Alt 7. Jun 2010, 17:55
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:
type
  TGeneric<TGenParam> = class
  private
    Feld: TGenParam;
  end;

...

var
  xyz: TGeneric<Integer>;
  abc: TGeneric<string>;
Der Compiler macht macht etwa das folgende daraus: (bzw. behandelt es so um's korrekter auszudrücken)
Delphi-Quellcode:
type
  TGeneric_Integer = class
  private
    Feld: Integer;
  end;
  TGeneric_String = class
  private
    Feld: string;
  end;

var
  xyz: TGeneric_Integer;
  abc: TGeneric_string;
Zur Laufzeit muss da also überhaupt nix mehr passieren...

Geändert von implementation ( 7. Jun 2010 um 18:27 Uhr) Grund: kleine Verbesserung
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

AW: Code von generischen Methoden/Klassen

  Alt 7. Jun 2010, 18:10
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.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 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