Ich habe das nie verstanden, warum die Dinger dann Generics genannt werden und nicht Templates? Denn das sind sie dann im Endeffekt doch, oder?
PS: Von Generics in .Net bzw. deren Unterschied zu C++ Templates habe ich keine Ahnung.
In C# wird der Code für einen Generic, wo der Typparameter ein Referenztyp ist, geshared. D.h. es spielt keine Rolle, ob du eine TList<TAffe> oder TList<TGiraffe> hast, weil beides ein Referenztyp ist. Der C++ Linker hingegen hat eine Optimierungsoption, die dafür sorgt, dass binär gleicher Code wieder rausgeworfen wird. Beides ist in Delphi nicht vorhanden, es wird pro generischer Typ der Code dupliziert.
Einzige Möglichkeit ist, sich da selber (je nach Art des Generics in sehr begrenztem Rahmen) zu behelfen, wie ich in Spring4D zum Beispiel mit den Listen getan habe.