加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

数组 – 在Delphi中使用动态数组记录与TList的优缺点是什么?

发布时间:2020-12-15 04:09:23 所属栏目:大数据 来源:网络整理
导读:这是一个理论问题,旨在生成Delphi中不同数据存储方式的优缺点查找列表. 假设我们有一个记录: type TMyRecord = record X,Y,Z: Single; IsValid: Boolean; end; 存储此类记录数组的基本选项是: TMyRecord数组; 带有getter / setter的TList的自定义后代 TLis
这是一个理论问题,旨在生成Delphi中不同数据存储方式的优缺点查找列表.

假设我们有一个记录:

type
  TMyRecord = record 
    X,Y,Z: Single; 
    IsValid: Boolean; 
  end;

存储此类记录数组的基本选项是:

> TMyRecord数组;
>带有getter / setter的TList的自定义后代
> TList< TMyRecord&gt ;;
我特别感兴趣的是#1 vs#3比较,这些差异有多大,特别是在性能方面.

解决方法

&的TList LT; T>优点:

>数组没有用于添加/插入/删除/排序/搜索的有用方法,TList没有.
> TList具有Notify方法,可以覆盖该方法以对项目添加/删除执行某些自定义操作.

&的TList LT; T>缺点:

> TList< T> [i]实际上返回其元素的副本.所以你不能写像TList< TMyRec> [idx] .SomeField:= foo.相反,您必须使用临时变量.数组显然允许这样的表达.
David Heffernan提到了TList< T> .List,它消除了这个缺点;然而,它只出现在XE3中
> TList是一个对象,在不需要时应该在程序结束时删除.
> System.Generics.Collections单元可以为之前未使用System.Classes单元的项目添加大量二进制大小.

对于我自己,我写了TRecordList< T>将项目作为指针操作的类(就像经典的TList一样).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读