在我们的 Delphi 应用程序中,我们使用TStringList来存储字符串和相应的对象。对于另一个项目,我需要在C#中做一些类似的事情,但是不确定做这件事的最有效的方法是什么。到目前为止,我已经考虑过使用数组列表、列表或字典。这些方法中的一个对我想做的事情有效吗?如果不有效,哪一个是好的方法?
ux6nzvsh1#
这取决于您需要TStringList的哪些特性,实际上没有直接的替代品。一个dictionary<string,object>是无序的,你不能有重复的字符串。没有Text属性来一次设置所有的字符串,等等。如果你没有问题,我会去。否则,您可能会考虑定义一个小类,如:
dictionary<string,object>
public class Item { public string String {get;set;} public object Object {get;set;} }
然后使用List<Item>。这将给出一个有序的(字符串,对象)元组列表。
List<Item>
wtlkbnrh2#
如果字符串是唯一的,就使用Dictionary<string, T>。如果不能保证它们是唯一的,字典就不合适了,你可能会想使用Tuple<string, T>的列表(C# 4)或者KeyValuePair<string, T>的列表,这与字典非常相似,只是显然不能保证唯一性,并且它保留了字典不一定要做的顺序。
Dictionary<string, T>
Tuple<string, T>
KeyValuePair<string, T>
Dictionary<string, T>> yourDictionary; // or List<Tuple<string, T>> yourCollection; // or List<KeyValuePair<string, T>> yourCollection;
最后,如果不希望使用其他解决方案之一,您可以定义自己的封装类型并创建一个 that 列表。
qlzsbp2j3#
这取决于您的集合所需要的特性。我会使用Dictionary<string, object>(泛型)。
Dictionary<string, object>
ru9i0ody4#
这篇博文很好地展示了SortedList和Dictionary之间的区别http://blog.bodurov.com/Performance-SortedList-SortedDictionary-Dictionary-Hashtable/
dwthyt8l5#
通用版本:
List<string>
直接,非通用(不要使用!):
ArrayList
请参阅MSDN:1、2
t98cgbkg6#
对于一个小的对象列表,我会使用Dictionary<string,xxx>,其中xxx是您希望存储的按字符串索引的对象类型。
Dictionary<string,xxx>
xxx
tkclm6bt7#
没什么,相信我,我的朋友,因为"对手"这个词我不得不说没什么!🤣
7条答案
按热度按时间ux6nzvsh1#
这取决于您需要TStringList的哪些特性,实际上没有直接的替代品。
一个
dictionary<string,object>
是无序的,你不能有重复的字符串。没有Text属性来一次设置所有的字符串,等等。如果你没有问题,我会去。否则,您可能会考虑定义一个小类,如:
然后使用
List<Item>
。这将给出一个有序的(字符串,对象)元组列表。wtlkbnrh2#
如果字符串是唯一的,就使用
Dictionary<string, T>
。如果不能保证它们是唯一的,字典就不合适了,你可能会想使用Tuple<string, T>
的列表(C# 4)或者KeyValuePair<string, T>
的列表,这与字典非常相似,只是显然不能保证唯一性,并且它保留了字典不一定要做的顺序。最后,如果不希望使用其他解决方案之一,您可以定义自己的封装类型并创建一个 that 列表。
qlzsbp2j3#
这取决于您的集合所需要的特性。我会使用
Dictionary<string, object>
(泛型)。ru9i0ody4#
这篇博文很好地展示了SortedList和Dictionary之间的区别
http://blog.bodurov.com/Performance-SortedList-SortedDictionary-Dictionary-Hashtable/
dwthyt8l5#
通用版本:
直接,非通用(不要使用!):
请参阅MSDN:1、2
t98cgbkg6#
对于一个小的对象列表,我会使用
Dictionary<string,xxx>
,其中xxx
是您希望存储的按字符串索引的对象类型。tkclm6bt7#
没什么,相信我,我的朋友,因为"对手"这个词我不得不说没什么!🤣