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

时间:2011-01-25 16:06:44

标签: c# arrays delphi list object

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

6 个答案:

答案 0 :(得分:9)

这取决于您需要的TStringList的哪些功能。没有真正的替代品。

dictionary<string,object>是无序的,您不能拥有重复的字符串。没有Text属性可以一次设置所有字符串,等等。如果一切正常,我会去那。

否则,您可以考虑定义一个类,如:

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

然后使用List<Item>。这为您提供了(字符串,对象)元组的有序列表。

答案 1 :(得分:3)

如果字符串是唯一的,请使用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;

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

答案 2 :(得分:1)

这取决于您收藏所需的功能。我会使用Dictionary<string, object>(泛型)。

答案 3 :(得分:0)

对于一小部分对象,我会使用Dictionary<string,xxx>,其中xxx是您要存储的字符串索引类型。

答案 4 :(得分:0)

这篇博文显示了SortedList和Dictionary之间的差异相当不错

http://blog.bodurov.com/Performance-SortedList-SortedDictionary-Dictionary-Hashtable/

答案 5 :(得分:0)

通用版本:

List<string>

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

ArrayList

请参阅MSDN:12