C# Hashtable 详解:键值存储、核心操作与实战示例
什么是 C# Hashtable?
Hashtable 是非泛型集合,以键值对存储数据。不同于数组或列表每个索引仅存单值,哈希表允许通过唯一键直接检索值,提供 O(1) 平均查找时间。
典型条目如下:
{ "001", ".Net" }
{ "002", "C#" }
{ "003", "ASP.Net" }
此处键为 "001"、"002"、"003",对应值为 ".Net"、"C#"、"ASP.Net"。
下面深入讲解 Hashtable 最常用操作。
声明 Hashtable
用 Hashtable 类型和 new 关键字实例化:
Hashtable ht = new Hashtable();
添加元素
用 Add 方法插入键值对。键和值都必须提供:
ht.Add("001", ".Net");
ht.Add("002", "C#");
ht.Add("003", "ASP.Net");
示例 1 – 显示所有值
下面控制台应用演示创建哈希表、填充并打印每个值:

using System;
using System.Collections;
namespace DemoApplication {
class Program {
static void Main(string[] args) {
Hashtable ht = new Hashtable();
ht.Add("001", ".Net");
ht.Add("002", "C#");
ht.Add("003", "ASP.Net");
ICollection keys = ht.Keys;
foreach (String k in keys) {
Console.WriteLine(ht[k]);
}
Console.ReadKey();
}
}
}
解析
- 声明
Hashtable变量ht。 - 用
Add添加键值对。 - 通过
ht.Keys获取键集合(返回ICollection)。 - 遍历键并用
ht[key]输出关联值。
运行程序输出:

常用方法
ContainsKey
检查特定键是否存在:
ht.ContainsKey("001"); // 键存在返回 true
ContainsValue
验证特定值是否存储在哈希表中:
ht.ContainsValue("C#"); // 找到值返回 true
示例 2 – 使用 ContainsKey & ContainsValue
下面简短程序演示两方法:

using System;
using System.Collections;
namespace DemoApplication {
class Program {
static void Main(string[] args) {
Hashtable ht = new Hashtable();
ht.Add("001", ".Net");
ht.Add("002", "C#");
ht.Add("003", "ASP.Net");
Console.WriteLine(ht.ContainsKey("001")); // true
Console.WriteLine(ht.ContainsValue("C#")); // true
Console.ReadKey();
}
}
}
解析
ContainsKey确认 "001" 存在。ContainsValue确认 "C#" 存储。
控制台显示:

关键要点
Hashtable 以键值对存储元素,知键时可快速查找。现代 C# 推荐泛型 Dictionary<TKey, TValue> 保证类型安全,但理解 Hashtable 对遗留代码和互操作场景仍有价值。
C语言
- C# 表达式、语句与代码块:全面指南与实战示例
- C++ do-while 循环详解:语法、实战示例与嵌套循环
- C++ 指针精通:核心概念、代码示例与实战应用
- C++ char 类型完全指南:声明、ASCII 码、输入输出与字符串转换
- C++ 运算符重载实战指南:语法、方法、限制与代码示例
- C++ 函数详解:从声明到调用的实战指南
- C# 集合实战教程:ArrayList、Stack、Queue、Hashtable 等核心类型全解析
- Python str.count() 完全指南:统计字符与子串出现次数实战
- Python round() 函数详解与实战示例
- 精通 Python map() 函数:语法、示例与最佳实践
- Python timeit():精准测量代码执行时间与实战示例
- Python list.count() 专家指南:语法、示例与性能解析