Zitat von
himitsu:
Das "Blöde" an der Generics-
Unit ist, daß da irgendwer auf eine total bescheuerte Idee gekommen ist
und die generischen Klassen genauso benannt hat, wie die Normalen.
Tja, die alten Namen passen eben einfach perfekt, alternative will ich mir gar nicht vorstellen
.
/add: Und Panthrax muss ich auch recht geben, ist imo eher eine Vereinfachung als potentielle Verwirrung.
Zitat von
Uwe Raabe:
In diesem Fall handelt es sich aber nicht um klassische Vererbung, sondern um die Instanziierung(Typisierung?) eines generischen Typs.
Nö. Sobald ein
class vorkommt, ist das ganz normale Vererbung.
Innerhalb des
class wird in der Tat ein generischer Typ instanziert, aber dafür braucht man keine Vererbung, es genügt ein Alias:
type TNonFoodList = TObjectList<TNonFood>;
Solange wir aber nicht über
TList<TDictionary<... reden, ist das aber ebenfalls unüblich, man sollte im Code einfach direkt
TObjectList<TNonFood> verwenden.
Zitat von
himitsu:
Es wäre praktisch so, als wenn man zwei Objektlisten im QuellCode "parallel" erstellt hätte.
Ich gehe stark davon aus, dass es wie beim .NET-Jitter gelöst wurde: Für jeden Value Type jeweils eine Kopie, für alle Reference Types (wahrscheinlich nur alle Klassentypen) eine Kopie zusammen.
Zitat von
Uwe Raabe:
Das unterstreicht meine Aussage, das man keine Variablen vom Typ eines Generics deklarieren kann (bis auf die besagte Ausnahme).
Anders ausgedrückt: Um einen
offenen generischen Typ zu verwenden, muss er
geschlossen, also alle formalen Typparameter durch konkrete Typen oder Typparameter der umgegebenden Klasse/Methode ersetzt werden.