如何定义通用TList
类型,以便我可以声明该类型的变量,然后为其分配TList<>
的任何特化?
我想声明这个变量:
var
MyList:THowToDeclareThisListType<T>;
然后像这样实例化它:
MyList:=THowToDeclareThisListType<integer>.Create;
或
MyList:=THowToDeclareThisListType<double>.Create;
等。我必须在这里遗漏一些非常明显的东西。我不想要类,只需要一个简单的类型定义。
答案 0 :(得分:5)
您正在尝试声明一个这样的变量:
var
List: TList<?>;
可以为List
分配TList<Integer>
或TList<Double>
或TList<string>
类型的对象。
这是不可能的。使用泛型类型定义变量时,必须完全实例化该类型。
如果变量被声明为具有TList<T>
的公共基类,则可以拥有包含TList<T>
类型任何对象的变量的唯一方法。并且公共基类不能是非实例化的泛型。对于TList<T>
,唯一可能的公共基类是TObject
。
所以你可以写
var
List: TObject;
然后将您的任何对象分配给List
。但我不确定那会非常有用!