delphi 使用泛型

type
  TForm8 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TmyKeyValue<T> = class
  private
    Fkey: string;
    Fvalue: T;
    procedure setKey(const Value: string);
    procedure setValue(const Value: T);
  public
    property Key: string read Fkey write setKey;
    property Value: T read Fvalue write setValue;
  end;

var
  Form8: TForm8;

implementation

{$R *.dfm}

{ TmyKeyValue<T> }

procedure TmyKeyValue<T>.setKey(const Value: string);
begin
  Fkey := Value;
end;

procedure TmyKeyValue<T>.setValue(const Value: T);
begin
  Fvalue := Value;
end;

procedure TForm8.Button1Click(Sender: TObject);
var
  kv: TmyKeyValue<TButton>;
begin
  kv := TmyKeyValue<TButton>.Create;
  kv.Key := 'myKey';
  kv.Value := Sender as TButton;

  ShowMessage(kv.Key + '||||||||' + kv.Value.Name);

  kv.Free;
end;
原文地址:https://www.cnblogs.com/yangxuming/p/10444340.html