如何声明和使用通用记录的通用TList

时间:2014-05-13 15:32:22

标签: delphi generics delphi-xe2

我想声明一个通用记录类型,例如

TMyGenericRecord<T, T1> = record
   X: <T>;
   Y: <T1>;
end;

然后我想声明TMyGenericRecord的TList,但似乎无法获得正确的语法。

TMyGenericList = TList<TMyGenericRecord<T, T1>>???

这甚至可能吗?

1 个答案:

答案 0 :(得分:8)

我想你想这样写:

type
  TMyGenericRecord<T1, T2> = record
    X: T1;
    Y: T2;
  end;

  TMyGenericList<T1, T2> = class(TList<TMyGenericRecord<T1, T2>>);

然后,您可以实例化此类型,例如:

var
  List: TMyGenericList<Integer, string>;

然后,您可以声明与此列表兼容的记录,如下所示:

var
  Rec: TMyGenericRecord<Integer, string>;

此时

List.Add(Rec);

将编译。虽然显然你需要构建一个列表实例。