什么是C#&x27;是德尔福最有效的对手';什么是英语?
在我们的Delphi应用程序中,我们使用TStringList来存储字符串和相应的对象。对于另一个项目,我需要在C#中做类似的事情,但不确定最有效的方法是什么。到目前为止,我考虑过使用数组列表、列表或字典。其中一个对我想做的事情有效吗?如果不是,那么哪种方式比较好?这取决于您的收藏所需的功能。我会使用什么是C#&x27;是德尔福最有效的对手';什么是英语?,c#,arrays,delphi,list,object,C#,Arrays,Delphi,List,Object,在我们的Delphi应用程序中,我们使用TStringList来存储字符串和相应的对象。对于另一个项目,我需要在C#中做类似的事情,但不确定最有效的方法是什么。到目前为止,我考虑过使用数组列表、列表或字典。其中一个对我想做的事情有效吗?如果不是,那么哪种方式比较好?这取决于您的收藏所需的功能。我会使用Dictionary(泛型)。对于一个小的对象列表,我会使用Dictionary,其中xxx是您要存储的对象类型,通过字符串进行索引。这篇博客文章显示了SortedList和Dictionary之间
Dictionary
(泛型)。对于一个小的对象列表,我会使用Dictionary
,其中xxx
是您要存储的对象类型,通过字符串进行索引。这篇博客文章显示了SortedList和Dictionary之间的差异
通用版本:
List<string>
请参见MSDN:,这取决于您需要TStringList的哪些功能。实际上没有直接的替代品
字典
是无序的,不能有重复的字符串。没有文本属性可以一次设置所有字符串,等等。如果所有这些都可以,我会这样做
否则,您可能会考虑定义一个小类:
public class Item {
public string String {get;set;}
public object Object {get;set;}
}
然后使用
列表
。这将为您提供一个有序的(字符串、对象)元组列表。如果字符串是唯一的,请使用字典。如果不能保证它们是唯一的,那么字典就不合适,您可能需要使用元组列表(C#4)或键值对列表,这与字典非常相似,只是显然不能保证唯一性,而且它保留了字典不一定会这样做的顺序
Dictionary<string, T>> yourDictionary; // or
List<Tuple<string, T>> yourCollection; // or
List<KeyValuePair<string, T>> yourCollection;
Dictionary>yourDictionary;//或
列出您的收藏;//或
列出你的收藏;
最后,如果您不想使用其他解决方案之一,您可以定义自己的封装类型并创建一个该类型的列表。Dictionary是一个具有类型安全性的哈希表Dictionary
是通用哈希表,因此无需使用HTTStringList
是一个,不是吗?@abatishchev是的,但更重要的是,每个字符串都可以与一个对象关联,并且可以作为一个大字符串(按回车符或其他字符分割)访问这些字符串。我们倾向于使用字典,但忘记了它不允许重复,所以将使用列表。@Tom:Check outEnumerable.TooLookup()
这是一个允许重复的字典TStringList
是一个,不是吗?TStringList
是一个,不是吗?@abatishchev,问题的关键是存储字符串和相应的对象。我想他更喜欢找字典而不是list@vc:如果他不想“与德尔福的TStringList相对应”,则选择“是”:
Dictionary<string, T>> yourDictionary; // or
List<Tuple<string, T>> yourCollection; // or
List<KeyValuePair<string, T>> yourCollection;