C#中哈希表和字典的区别
在 C# 中,Dictionary 是一个通用集合,通常用于存储键/值对。 字典在 System.Collection.Generics
命名空间下定义。 它本质上是动态的,意味着字典的大小根据需要而增长。
示例:
运行后输出结果如下:
Hashtable
是基于键的哈希码排列的键/值对的集合。 或者换句话说,哈希表用于创建使用哈希表进行存储的集合。 它是在 System.Collections
命名空间中定义的非泛型集合。 在 Hashtable
中,只要在 Hashtable
中用作键,键对象就必须是不可变的。
示例:
运行结果如下:
哈希表与字典区别
哈希表 | 字典 |
---|---|
Hashtable 是一个非泛型集合。 | 字典是一个通用集合。 |
Hashtable 在 System.Collections 命名空间下定义。 |
字典在 System.Collections.Generic 命名空间下定义。 |
在 Hashtable 中,可以存储相同类型或不同类型的键/值对。 | 在 Dictionary 中,可以存储相同类型的键/值对。 |
在 Hashtable 中,不需要指定 key 和 value 的类型。 | 在 Dictionary 中,必须指定键和值的类型。 |
由于装箱/拆箱,数据检索比字典慢。 | 由于没有装箱/拆箱,数据检索比 Hashtable 快。 |
在 Hashtable 中,如果尝试访问给定 Hashtable 中不存在的键,那么它将给出 null 值。 |
在 Dictionary 中,如果尝试访问给定 Dictionary 中不存在的键,则会出错。 |
它是线程安全的。 | 它也是线程安全的,但仅适用于公共静态成员。 |
它不维护存储值的顺序。 | 它始终保持存储值的顺序。 |