首页 > C# > 为什么在 C# 中,字典比哈希表更受欢迎?

为什么在 C# 中,字典比哈希表更受欢迎?

上一篇 下一篇

在大多数编程语言中,字典优先于哈希表。
这背后的原因是什么?

分割线

网友回答:

差异

Dictionary Hashtable
通用 非通用
需要自己的线程同步 通过 Syncd() 方法提供线程安全版本
枚举项:键值对 枚举项:字典条目
较新的 (> .NET 2.0) 较旧(自 .NET 1.0)
System.Collections.Generic 系统集合
请求不存在的密钥引发异常 对不存在的键的请求返回 null
对于值类型可能会更快一些 值类型的速度稍慢(需要装箱/取消装箱)

相似 之 处:

  • 两者都是内部哈希表 == 根据键快速访问多项目数据
  • 两者都需要不可变和唯一的键
  • 两者的键都需要自己的 GetHashCode() 方法

替代 .NET 集合:

(候选者代替字典和哈希表)

  • ConcurrentDictionary– 线程安全(可以同时从多个线程安全地访问)
  • HybridDictionary优化性能(对于少数项目和许多项目)
  • OrderedDictionary– 可以通过 int 索引访问值(按添加项目的顺序)
  • SortedDictionary– 项目自动排序
  • StringDictionary– 强类型并针对字符串进行了优化(现已弃用,取而代之的是字典<字符串,字符串>)

分割线

网友回答:

就其价值而言,字典(在概念上)是一个哈希表。

如果你的意思是“为什么我们使用类而不是类?”,那么这是一个简单的答案:是一个泛型类型,不是。这意味着您可以使用 获得类型安全,因为您不能在其中插入任何随机对象,也不必强制转换取出的值。Dictionary<TKey, TValue>HashtableDictionary<TKey, TValue>HashtableDictionary<TKey, TValue>

有趣的是,.NET Framework 中的实现基于 ,正如您可以从其源代码中的此注释中看出的那样:Dictionary<TKey, TValue>Hashtable

通用词典是从哈希表的源代码复制的

分割线

网友回答:

因为是一个泛型类 ( ),因此访问其内容是类型安全的(即您不需要像使用 . 那样从 进行强制转换)。DictionaryDictionary<TKey, TValue>ObjectHashtable

比较

var customers = new Dictionary<string, Customer>();
...
Customer customer = customers["Ali G"];

var customers = new Hashtable();
...
Customer customer = customers["Ali G"] as Customer;

但是,在内部实现为哈希表,因此从技术上讲,它的工作方式相同。Dictionary

模板简介:该模板名称为【为什么在 C# 中,字典比哈希表更受欢迎?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【C#】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 301次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-14
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信模板 单页式简历模板 微信公众平台 微信素材 微信文章 自适应 微信图片 企业网站 响应式 html5
您可能会喜欢的其他模板