gpt4 book ai didi

delphi - 如何使用 TMyRecord 中的通用子列表释放通用 TList

转载 作者:行者123 更新时间:2023-12-03 19:07:05 26 4
gpt4 key购买 nike

在 Windows 下的 Delphi 10 Berlin 中,我有以下关于释放通用列表的问题:

我有以下记录/列表结构:

type
TMyRecord=record
Value1: Real;
SubList1: TList<Integer>;
SubList2: TList<Real>;
end;

TMyListOfRecords=TList<TMyRecord>;

我想使用以下代码释放结构:
var
i: Integer;
AMyListOfRecords: TMyListOfRecords;
begin
//other code

//free AMyListOfRecords and all its content
for i:=0 to AMyListOfRecords.Count-1 do
begin
AMyListOfRecords[i].SubList1.Free;
AMyListOfRecords[i].SubList2.Free;
end;
AMyListOfRecords.Free;
end;

这似乎有效。但我想知道是否有更简单或更优雅的解决方案?

最佳答案

您可以将记录类型转换为类 - 开销可以忽略不计,因为记录已经包含子对象。在此类析构函数中释放子对象,并使用

 TMyListOfClasses = TObjectList<TMyClass>;

OwnsObjects = True
在这种情况下,您只需要
AMyListOfClasses.Free;

关于delphi - 如何使用 TMyRecord 中的通用子列表释放通用 TList<TMyRecord>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37548553/

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