C# 3.5中应该使用Dictionary<string, MyObject>还是List<MyObject>?

8

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

我正在学习C#3.0+,看起来现在我可以简单地使用List并在该对象上执行LINQ以获取特定对象(使用.where()方法)。

因此,如果我理解正确,Dictionary类已经失去了它的作用?

4个回答

13

不,对于给定键来说,使用字典仍然更高效。

使用列表仍需遍历整个列表才能找到所需内容。而字典可以直接进行查找。


5
如果您只有一个列表,那么进行LINQ选择将扫描列表中的每个项目,将其与您正在查找的项目进行比较。
然而,字典会计算您要查找的字符串的哈希码(由GetHashCode方法返回)。然后使用此值更有效地查找字符串。有关此操作方式的更多信息,请参见Wikipedia
如果您有多个字符串,则最初的(列表)方法将开始变得非常缓慢。

2

在我看来,与LINQ相比,使用字典方法会更快,因此如果你有一个包含大量项目的数组,你应该使用字典方法。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接