四、Hashtable类
①.Hashtable概述
通过Hashtable类将数据作为一组键值对来存储,这些键值对是根据编码来组织的,可以将键作为索引器来获得对应值的对象。
Hashtable对象中的键值必须是唯一的,在Hashtable中一个值只允许出现一次,如果企图往Hashtable对象里添加已经存在键值,将会抛出ArgumentException异常。
Hashtable类用于处理和表现类似键值对,其中键通常可用来快速查找,同时键是区分大小写;用于存储对应于键的值。Hashtable中键值对均为object类型,所以Hashtable可以支持任何类型的键值对.
using System;
using System.Collections;
namespace HashtableEmployee
{
classEmployee
{
privateint empID;//员工号
privatestring empName;//姓名
privateint empSalary;//员工薪水
public Employee(int id,string name,int salary)
{
this.empID = id;
this.empName = name;
this.empSalary = salary;
}
publicoverridestring ToString()
{
string empInfo="员工号:"+this.empID+",姓名:"+this.empName+",薪水"+this.empSalary;
return empInfo;
}
staticvoidMain(string[] args)
{
Hashtable ht = newHashtable();
ht.Add(1, newEmployee(1, "小雨", 3000));//将一个键值对添加到哈希表中
ht.Add(4, newEmployee(4, "小华", 2000));
ht.Add(3, newEmployee(3, "小刚", 1500));
ht.Add(2, newEmployee(2, "小芳", 3500));
int number;
Console.Write("你要查找哪位员工的信息:");
try
{
number = int.Parse(Console.ReadLine());//判断控制台输入的是否为整数
}
catch (FormatException)
{
Console.WriteLine("员工号必须是整数!请重新输入!");
number = int.Parse(Console.ReadLine());
}
if (ht.ContainsKey(number))//测试键是否已经存在
{
Employee emp = (Employee)ht[number];//键作为索引器来获得对应值的对象
Console.WriteLine(emp.ToString());
}
else
{
Console.WriteLine("你输入的员工编号不存在!");
}
}