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

delphi – 我应该总是使用“TList”而不是“String of String”吗?,第1张

概述我一直在迁移Delphi 7中开发的项目,并且每次以前的开发人员想要使用他们创建的集合时都会查看代码: ArrayOfString : array of string;ArrayOfInteger: array of integer;ArrayOfStringArrays : array of ArrayOfString; 这种代码在很多地方重复,并且每次都为它们中的每一个重复“SetLeng 我一直在迁移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管理.如果您一次性合成数组,然后不调整它们的大小,那么生命周期管理问题可以使数组更方便使用.

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

总结

以上是内存溢出为你收集整理的delphi – 我应该总是使用“TList”而不是“String of String”吗?全部内容,希望文章能够帮你解决delphi – 我应该总是使用“TList”而不是“String of String”吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1272957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存