1

如何定义泛型TList类型,以便我可以声明该类型的变量,然后为其分配任何特化TList<>

我想声明这个变量:

var
  MyList:THowToDeclareThisListType<T>;

然后像这样实例化它:

MyList:=THowToDeclareThisListType<integer>.Create;

或者

MyList:=THowToDeclareThisListType<double>.Create;

等等我必须在这里遗漏一些非常明显的东西。我不想要类,只是一个简单的类型定义。

4

1 回答 1

5

您正在尝试声明这样的变量:

var
  List: TList<?>;

这样List可以分配类型为TList<Integer>orTList<Double>或的对象TList<string>

这是不可能的。当您使用泛型类型定义变量时,该类型必须完全实例化。

拥有一个包含任何类型对象的变量的唯一方法TList<T>是,如果该变量被声明为具有TList<T>. 并且公共基类不能是非实例化的泛型。对于TList<T>唯一可能的公共基类是TObject.

所以你可以写

var
  List: TObject;

然后将您的任何对象分配给List. 但我不确定这会非常有用!

于 2013-03-28T17:01:05.743 回答