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