这是一个理论性问题,旨在生成Delphi中不同数据存储方式的优缺点的查找列表。
假设我们有一个记录:
type
TMyRecord = record
X,Y,Z: Single;
IsValid: Boolean;
end;
存储此类记录数组的基本选项是:
array of TMyRecord;
TList
的后代TList<TMyRecord>;
我特别对#1与#3比较感兴趣,两者之间的差异有多少,尤其是在性能方面。
最佳答案
TList<T>
优点:
TList<T>
缺点:TList<T>[i]
实际上返回其元素的副本。因此,您不能编写类似TList<TMyRec>[idx].SomeField := foo
的内容。相反,您必须使用临时变量。数组显然允许这种表达。 大卫·赫弗南(David Heffernan)提到了
TList<T>.List
,它消除了这一缺陷。但是,它仅出现在XE3 我自己编写了
TRecordList<T>
类,该类将项作为指针进行操作(就像经典的TList一样)。关于arrays - 在Delphi中使用动态记录数组与List <T Record>的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22215029/