给定泛型

TMyClass <T> = class
  ...
end;


有没有办法将多个实例(实例化不同的类型)放在一起

FList : TList <TMyClass>;
FList.Add (TMyClass <Integer>.Create);
FList.Add (TMyClass <String>.Create);


要么

FArray : array [0..1] of TMyClass;
FArray [0] := TMyClass <Integer>.Create;
FArray [1] := TMyClass <String>.Create;


我知道这段代码无法编译。但是有可能实现这样的目标吗?

最佳答案

如果使用TMyClass的祖先创建FList,则可以执行此操作。

泛型不是继承,因此TMyClass不是TMyClass的祖先。

TMyAbstractClass = class
TMyClass <T> = class (TMyAbstractClass)
  ...
end;

FList : TList <TMyAbstractClass>;
FList.Add (TMyClass <Integer>.Create);
FList.Add (TMyClass <String>.Create);

FArray : array [0..1] of TMyAbstractClass;
FArray [0] := TMyClass <Integer>.Create;
FArray [1] := TMyClass <String>.Create;

关于delphi - 将具有不同通用类型的对象放在一起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1205822/

10-09 19:37