字典<string,MyObject>或List <MyObject>与C#3.5?

Pat*_*ins 8 .net c# collections c#-3.0

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

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

那么,如果我理解得很好,那么Dictionary类就失去了它的目的呢?

Kei*_*las 13

不,在给定密钥的情况下,字典更有效率.

您仍需要遍历列表以查找所需内容的列表.字典进行查找.


Oli*_*lam 5

如果您只有一个List,那么执行LINQ选择将扫描列表中的每个项目,将其与您要查找的项目进行比较.

然而,Dictionary会计算您要查找的字符串的哈希码(由GetHashCode方法返回).然后使用该值更有效地查找字符串.有关其工作原理的更多信息,请参阅维基百科.

如果你有多个字符串,初始(List)方法将开始变得非常缓慢.