字典<;字符串,MyObject>;或列表<;MyObject>;用C#3.5?

字典<;字符串,MyObject>;或列表<;MyObject>;用C#3.5?,c#,.net,collections,c#-3.0,C#,.net,Collections,C# 3.0,我经常在C#2.0中使用字典,第一个键作为包含唯一标识符的字符串 我正在学习C#3.0+,现在似乎我可以简单地使用一个列表并简单地对该对象执行LINQ来获取特定的对象(使用.where()) 所以,如果我理解得很好,Dictionary类已经失去了它的用途了?不,字典在给定密钥的情况下更能有效地把东西取出来 列表您仍然需要遍历列表才能找到所需内容。字典进行查找。我认为字典方法比LINQ快得多,因此,如果你有一个包含很多项的数组,你应该使用字典。如果你只有一个列表,那么执行LINQ select将

我经常在C#2.0中使用字典,第一个键作为包含唯一标识符的字符串

我正在学习C#3.0+,现在似乎我可以简单地使用一个列表并简单地对该对象执行LINQ来获取特定的对象(使用.where())


所以,如果我理解得很好,Dictionary类已经失去了它的用途了?

不,字典在给定密钥的情况下更能有效地把东西取出来


列表您仍然需要遍历列表才能找到所需内容。字典进行查找。

我认为字典方法比LINQ快得多,因此,如果你有一个包含很多项的数组,你应该使用字典。

如果你只有一个列表,那么执行LINQ select将扫描列表中的每个项,并将其与你正在查找的项进行比较

但是,字典会计算所查找字符串的哈希代码(由GetHashCode方法返回)。然后使用该值更有效地查找字符串。有关此操作的更多信息,请参阅


如果有多个字符串,则初始(列表)方法将开始变得非常缓慢。

字典作为哈希表实现。因此,它应该为查找提供恒定的时间访问。列表作为动态数组实现,为您提供线性时间访问

基于底层数据结构,字典仍应提供更好的性能

字典上的MSDN文档

和列表