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

delphi – 我应该总是使用“TList”而不是“String of String”

发布时间:2020-12-15 09:49:19 所属栏目:大数据 来源:网络整理
导读:我一直在迁移Delphi 7中开发的项目,并且每次以前的开发人员想要使用他们创建的集合时都会查看代码: ArrayOfString : array of string;ArrayOfInteger: array of integer;ArrayOfStringArrays : array of ArrayOfString; 这种代码在很多地方重复,并且每次都
我一直在迁移Delphi 7中开发的项目,并且每次以前的开发人员想要使用他们创建的集合时都会查看代码:

ArrayOfString : array of string;
ArrayOfInteger: array of integer;
ArrayOfStringArrays : array of ArrayOfString;

这种代码在很多地方重复,并且每次都为它们中的每一个重复“SetLength”,我想知道是否将所有这些东西的数组改为TList< Something>现在我们在Delphi XE4.

这样做有什么好处,资源,速度或类似的东西来支持我做出这个决定?

PS:我来自JAVA和Delphi给我感到黑暗和充满恐惧

解决方法

将动态数组视为比TStringList或TList< T>更低级别的构造.

动态数组通过指针提供对元素的直接访问.该语言隐藏了指针,但这基本上都是动态数组.但是你负责任何重新分配,如果你想插入或删除项目,那么你必须编写代码,并处理细节.

更高级别的集合类TStringList和TList< T>建立在动态数组之上.这是内部如何存储内容.但是集合类为你包装了这个.作为方法提供了诸如插入和删除等更高级别的操作.实质上,这些集合类比原始动态数组提供了更多的便利.

为了说明,请考虑插入项目的行为.对于动态数组,您可以这样做:

>调整阵列大小.
>将插入点之后的项目从位置i移动到i 1.
>分配插入的项目.

如果您不止一次需要编写此代码,那么,您做错了.

对于您写的高级集合:

List.Insert(Index,Value);

让班级来处理细节.

请注意,由于历史原因,并且因为字符串特别重要,开发人员倾向于使用定制的专用TStringList类而不是TList< string>.专用类再次提供TList< string>之外的功能.因为它专门研究字符串,并且可以提供定制到字符串的功能.同样,专用课程提供了便利.

动态阵列派上用场的一个地方就是当你不想招致终身管理的样板时.因此,对于没有针对类的ARC的桌面编译器,您需要明确地销毁TList< T>.实例.但动态阵列的生命周期由ARC管理.如果您一次性合成数组,然后不调整它们的大小,那么生命周期管理问题可以使数组更方便使用.

根据经验,喜欢高级集合类.它们应该是您的默认选择.有时动态数组是正确的选择,但这往往适用于更专业的场景.

(编辑:李大同)

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

    推荐文章
      热点阅读