Variable classe dans les génériques

De RAD Studio
Aller à : navigation, rechercher

Remonter à Génériques - Index

La variable classe définie dans un type générique est instanciée dans chaque type instancié identifié par les paramètres de type.

Le code suivant montre que TFoo<Integer>.FCount et TFoo<String>.FCount ne sont instanciés qu'une seule fois, et que ce sont deux variables différentes.

 {$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); // renvoie 2
   Writeln(TFoo<String>.FCount);  // renvoie 1
 end.

Voir aussi