Klassenvariablen in Generics
Nach oben zu Generics - Index
Die in einem generischen Typ definierte Klassenvariable wird in jedem instantiierten Typ instantiiert, der von Typparametern identifiziert wird.
Der folgende Quelltext zeigt, dass TFoo<Integer>.FCount und TFoo<String>.FCount nur einmal instantiiert werden, und dass es sich hierbei um zwei verschiedene Variablen handelt.
{$APPTYPE CONSOLE}
type
TFoo<T> = class
class var FCount: Integer;
constructor Create;
end;
constructor TFoo<T>.Create;
begin
inherited Create;
Inc(FCount);
end;
procedure Test;
var
FI: TFoo<Integer>;
begin
FI := TFoo<Integer>.Create;
FI.Free;
end;
var
FI: TFoo<Integer>;
FS: TFoo<String>;
begin
FI := TFoo<Integer>.Create;
FI.Free;
FS := TFoo<String>.Create;
FS.Free;
Test;
Writeln(TFoo<Integer>.FCount); // Ausgabe 2
Writeln(TFoo<String>.FCount); // Ausgabe 1
end.