|
|
1
42
|
|
|
2
12
在泛型出现之前,TStringList在Delphi中已经存在很长时间了。因此,它建立了一些通用字符串列表所不具备的有用特性。 泛型版本只是创建了一个新类型,它与处理字符串类型的TList相同。(.Add()、.Insert()、.Remove()、.Clear()等)
|
|
|
3
2
|
|
|
4
2
我可能会说,如果您想要向后兼容,请使用TStringList,如果您想要向前兼容(也许将来可以选择将字符串列表更改为int64列表),那么就选择TList。 |
|
|
5
2
从内存的角度来看,TStringList内存使用率随着每个项中添加的TObject指针的大小而增加。TList内存使用量随着指针大小的增加而增加。如果只需要一个字符串数组而不需要搜索、替换、排序或关联操作,那么一个动态数组(字符串数组)就足够了。这缺乏TStringList或TList的良好内存管理,但理论上应该使用更少的内存。 |
|
|
6
2
TStringlist是Delphi的一个非常通用的类。我多次使用(并滥用;-)它的Objects属性。将带分隔符的字符串快速转换为TMemo和类似控件(TListBox、TComboBox,仅列出其中一些控件)非常有趣。
|
|
|
7
1
对于TStringList在过去被滥用的大多数目的来说,TObjectDictionary更好——它更快,并且不需要排序。 如果您需要TStrings对象(通常用于UI内容,因为VCL即使在XE5中也不太使用泛型),请使用TStringList-TObject所需的强制转换很烦人,但不是一个showstopper。 |
|
|
8
0
TStringList的使用时间太长了,它有很多优点,罗布·肯尼迪都提到了这一点。 将其用作字符串和对象对的唯一真正缺点是必须将对象强制转换为该列表中预期和存储的实际类型(阅读时),据我所知,Embarcadero没有为Delphi 2009及以上VCL库提供TStringList的通用版本。 https://github.com/t00/deltoo#tgenericstringlist 一个重要的注意事项是,它将默认属性从字符串更改为对象,因为在大多数情况下,当对象存储在列表中时,它也是其最常访问的属性。 |