在 C# 中,我发现自己使用了 List<T>
, IList<T>
或 IEnumerable<T>
99% 的时间。是否存在使用 HashTable
会更好的情况? (或 2.0 及更高版本中的 Dictionary<T,T>
)超过这些?
编辑:
正如所指出的,某人想用集合做什么通常决定了应该使用什么,所以你什么时候使用 Hashtable
/Dictonary<T,T>
在 List<T>
?
最佳答案
可能与 OP 问题没有直接关系,但有一篇关于使用哪种集合结构的有用博客文章:SortedSets
基本上,您想对集合做什么决定了您应该创建什么类型的集合。
更详细地总结:
- 如果您希望能够枚举和/或修改集合(通常在列表末尾添加),请使用 IList
- 如果您只想枚举集合(不需要添加/删除 - 通常用作返回类型),请使用 IEnumeration
- 如果您想通过键访问元素(使用键快速添加/删除元素),请使用 IDictionary
如果您想按预定义的顺序访问集合(最常见的用法是按顺序访问集合),请使用 SortedSet
总的来说,如果您想按特定顺序按键访问/修改项目,请使用字典(优先于列表,因为通常按顺序完成;优先于枚举,因为您无法修改枚举;优先于哈希表因为它不是严格类型化的,所以当你不需要对键进行排序时,优先于排序列表)
关于c# - 何时使用哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3061182/