gpt4 book ai didi

delphi - 如何在不知道类型参数的情况下声明泛型类型的变量?

转载 作者:行者123 更新时间:2023-12-03 19:17:06 24 4
gpt4 key购买 nike

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

我想声明这个变量:

var
MyList:THowToDeclareThisListType<T>;

然后像这样实例化它:
MyList:=THowToDeclareThisListType<integer>.Create;

或者
MyList:=THowToDeclareThisListType<double>.Create;

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

最佳答案

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

var
List: TList<?>;

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

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

您可以拥有一个变量来保存任何类型的对象的唯一方法 TList<T>是如果变量被声明为具有公共(public)基类 TList<T> .并且公共(public)基类不能是非实例化的泛型。对于 TList<T>唯一可能的通用基类是 TObject .

所以你可以写
var
List: TObject;

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

关于delphi - 如何在不知道类型参数的情况下声明泛型类型的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15687723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com