我有一个 type 列表TList<TForm>
。我需要转换它并TList<TObject>
像这样使用它:
procedure mainForm.testCast;
var
listT: TList<TForm>;
listW: TList<TObject>;
obj: TObject;
begin
listT := TList<TForm>.create;
listT.add(form1);
listT.add(form2);
listW := TList<TObject>(listT); // Casting is OK
// This works, but is this fine?
for obj in listW do
memo1.lines.add(obj.className);
end;
该示例按预期工作,但是可以在通用列表之间进行这样的转换吗?这会导致一些数据结构损坏等吗?我仅将它用于循环 ( DoGetEnumerator
) 目的和一些字符串检查,即我不会添加/删除项目。
真正的功能稍微复杂一点。它参考listT
在TValue
. 主要目标是不链接FMX.Forms
到我的单位。