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

网友回答:
Dictionary |
Hashtable |
|---|---|
| 通用 | 非通用 |
| 需要自己的线程同步 | 通过 Syncd() 方法提供线程安全版本 |
枚举项:键值对 |
枚举项:字典条目 |
| 较新的 (> .NET 2.0) | 较旧(自 .NET 1.0 起) |
| 在 System.Collections.Generic 中 | 在系统集合中 |
| 请求不存在的密钥引发异常 | 对不存在的键的请求返回 null |
| 对于值类型可能会更快一些 | 值类型的速度稍慢(需要装箱/取消装箱) |
GetHashCode() 方法(候选者代替字典和哈希表)
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#】栏目查找您需要的精美模板。