Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是C#&x27;是德尔福最有效的对手';什么是英语?_C#_Arrays_Delphi_List_Object - Fatal编程技术网

什么是C#&x27;是德尔福最有效的对手';什么是英语?

什么是C#&x27;是德尔福最有效的对手';什么是英语?,c#,arrays,delphi,list,object,C#,Arrays,Delphi,List,Object,在我们的Delphi应用程序中,我们使用TStringList来存储字符串和相应的对象。对于另一个项目,我需要在C#中做类似的事情,但不确定最有效的方法是什么。到目前为止,我考虑过使用数组列表、列表或字典。其中一个对我想做的事情有效吗?如果不是,那么哪种方式比较好?这取决于您的收藏所需的功能。我会使用Dictionary(泛型)。对于一个小的对象列表,我会使用Dictionary,其中xxx是您要存储的对象类型,通过字符串进行索引。这篇博客文章显示了SortedList和Dictionary之间

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

这取决于您的收藏所需的功能。我会使用
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
是通用哈希表,因此无需使用HT
TStringList
是一个,不是吗?@abatishchev是的,但更重要的是,每个字符串都可以与一个对象关联,并且可以作为一个大字符串(按回车符或其他字符分割)访问这些字符串。我们倾向于使用字典,但忘记了它不允许重复,所以将使用列表。@Tom:Check out
Enumerable.TooLookup()
这是一个允许重复的字典
TStringList
是一个,不是吗?
TStringList
是一个,不是吗?@abatishchev,问题的关键是存储字符串和相应的对象。我想他更喜欢找字典而不是list@vc:如果他不想“与德尔福的TStringList相对应”,则选择“是”:
Dictionary<string, T>> yourDictionary; // or
List<Tuple<string, T>> yourCollection; // or
List<KeyValuePair<string, T>> yourCollection;