C#中与 Delphi 的TStringList最有效的对应项是什么?

kiz8lqtg  于 2022-11-04  发布在  C#
关注(0)|答案(7)|浏览(188)

在我们的 Delphi 应用程序中,我们使用TStringList来存储字符串和相应的对象。对于另一个项目,我需要在C#中做一些类似的事情,但是不确定做这件事的最有效的方法是什么。到目前为止,我已经考虑过使用数组列表、列表或字典。这些方法中的一个对我想做的事情有效吗?如果不有效,哪一个是好的方法?

ux6nzvsh

ux6nzvsh1#

这取决于您需要TStringList的哪些特性,实际上没有直接的替代品。
一个dictionary<string,object>是无序的,你不能有重复的字符串。没有Text属性来一次设置所有的字符串,等等。如果你没有问题,我会去。
否则,您可能会考虑定义一个小类,如:

public class Item { 
  public string String {get;set;} 
  public object Object {get;set;}
}

然后使用List<Item>。这将给出一个有序的(字符串,对象)元组列表。

wtlkbnrh

wtlkbnrh2#

如果字符串是唯一的,就使用Dictionary<string, T>。如果不能保证它们是唯一的,字典就不合适了,你可能会想使用Tuple<string, T>的列表(C# 4)或者KeyValuePair<string, T>的列表,这与字典非常相似,只是显然不能保证唯一性,并且它保留了字典不一定要做的顺序。

Dictionary<string, T>> yourDictionary; // or
List<Tuple<string, T>> yourCollection; // or
List<KeyValuePair<string, T>> yourCollection;

最后,如果不希望使用其他解决方案之一,您可以定义自己的封装类型并创建一个 that 列表。

qlzsbp2j

qlzsbp2j3#

这取决于您的集合所需要的特性。我会使用Dictionary<string, object>(泛型)。

dwthyt8l

dwthyt8l5#

通用版本:

List<string>

直接,非通用(不要使用!):

ArrayList

请参阅MSDN:12

t98cgbkg

t98cgbkg6#

对于一个小的对象列表,我会使用Dictionary<string,xxx>,其中xxx是您希望存储的按字符串索引的对象类型。

tkclm6bt

tkclm6bt7#

没什么,相信我,我的朋友,因为"对手"这个词我不得不说没什么!🤣

相关问题