c# - 何时使用哈希表

标签 c#

在 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/

相关文章:

c# - 使用Xpcom.Shutdown(),Xpcom.Initialize(path)后的GeckoFx不能再使用

c# - 如何将分配给 Object 的 c# 基本类型数组转换为我可以迭代的内容?

c# - C# 中的字符串解析(对我来说)很困难(正则表达式?)

c# - IronPython 无法导入模块 cv2 (OpenCV)

c# - 如何获得 ListBox 的子控件?

c# - EPPlus 不下载带有模板的 Excel 文件

c# - Xamarin.Forms.Maps 2.3.4 自定义 MapRenderer 禁用一切

c# - C# 中多重继承的替代解决方案的最佳实践是什么

c# - EF 代码优先 - 复合键

c# - 如何在 Entity Framework Code First 中设置 0..* 关系?