|
|
1
196
仅仅
如果您是.NET2.0或更高版本,您应该
更喜欢
一个微妙但重要的区别是
|
|
|
2
85
让我们举一个例子来解释哈希表和字典之间的区别。
以下是字典
|
|
|
3
24
哈希表和字典还有一个更重要的区别。如果使用索引器从哈希表中获取值,哈希表将成功为不存在的项返回null,而如果尝试使用字典中不存在的索引器访问项,字典将抛出错误 |
|
|
4
13
字典是类型化的(因此valuetypes不需要装箱),哈希表不是类型化的(因此valuetypes需要装箱)。哈希表比dictionary IMHO有更好的获取值的方法,因为它总是知道值是一个对象。虽然如果您使用的是.NET3.5,为dictionary编写一个扩展方法以获得类似的行为是很容易的。 如果每个键需要多个值,请在此处查看我的MultiValueDictionary源代码: multimap in .NET |
|
|
5
10
要添加一个差异: 尝试访问不存在的键会在字典中出现运行时错误,但在哈希表中不会出现问题,因为它返回null而不是error。 例如
此处键0&没有错误;也适用于键“十”(注:t较小)
此处显示键0的错误&也适用于键10,因为这两项在字典中都不存在,所以在尝试访问时出现运行时错误。 |
|
|
6
6
Hashtable类是一种特定类型的字典类,它使用一个整数值(称为哈希)来帮助存储其键。Hashtable类使用hash来加速对集合中特定键的搜索。NET中的每个对象都派生自对象类。此类支持GetHash方法,该方法返回唯一标识对象的整数。Hashtable类通常是一个非常有效的集合。Hashtable类的唯一问题是它需要一点开销,对于小集合(少于十个元素),开销会影响性能。
|
|
|
7
3
ILookup接口在.NET3.5中与linq一起使用。 哈希表是弱类型的基类;字典库 抽象类是stronly类型的,并在内部使用哈希表。 我发现字典有一个奇怪的地方,当我们在字典中添加多个条目时,条目添加的顺序保持不变。因此,如果我在字典上应用foreach,我将按照插入记录的相同顺序获取记录。 然而,对于普通哈希表,情况并非如此,因为当我在哈希表中添加相同的记录时,顺序不会得到维护。就我所知,字典是基于哈希表的,如果这是真的,为什么我的字典保持顺序而哈希表不保持顺序? 至于它们的行为为何不同,这是因为泛型字典实现了一个哈希表,而不是基于System.Collections.hashtable。通用字典实现基于从列表中分配键值对。然后使用哈希表存储桶对这些数据进行索引,以进行随机访问,但当它返回枚举数时,它只是按顺序遍历列表,只要不重复使用条目,这就是插入顺序。 希夫戈文 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |