给定泛型
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/