Zitat von
Ghostwalker:
Man baut sich eine abstrakte Vorlage, die später (z.B. durch einen Prä-Prozessor) typisiert wird.
Das wären Templates. Generics sind vorkompilierte Klassen, die Jitter oder Slots enthalten, die dann mit Methodenzeigern/Infos der Spezialisierung überschrieben werden.
Vorteil ist, dass du einen Generic direkt kompilieren kannst und somit schon ohne Spezialiserung Fehlermeldungen bekommst.
Nachteil ist, dass du keine Operatoren benutzen kannst. Und auch sonst kannst du nur die Dinge benutzen, die du durch Einschränkungen der Typenparameter festgelegt hast.
Hier mal ein Bleistift (ist allerdings in Chrome, da Delphi noch keine Generics hat):
Delphi-Quellcode:
type
IDoSomething = public interface
method DoSomething : String;
end;
GenericSample<T> = public static class
where T is IDoSomething;
public
class method Test(instance : T);
end;
implementation
class method GenericSample<T>.Test(instance : T);
begin
var miep := instance.DoSomething();
Console.WriteLine(miep);
end;
Wie du siehst, kann ich die Methode benutzen, weil ich T so eingeschränkt habe, dass es IDoSomething implementieren muss.