字典是一种复杂的数据结构,它允许通过KEY值(键)来访问元素,例如:
EmployeeData类中保存员工的数据,包括:(employeeID,employeeName,employeeSalary)。
string employeeID ; //员工编号是一个字符串型,将被用来作为字典中的键(当然还可以用任意类型的对象作为键)。
EmployeeData myEmployeeData=Employees[myID]; //通过字符串型的键来访问(索引)员工的数据;
类定义代码如下:
/// <summary>
/// 员工数据类;
/// </summary>
public class EmployeeData
{
protected string name;
protected string sex;
protected string id; //作为键;
/// <summary>
/// 构造函数;
/// </summary>
/// <param name="id">EmployeeID ID</param>
/// <param name="name">字符串 姓名</param>
/// <param name="salary">字符串 性别</param>
public EmployeeData(string id, string name, string sex)
{
this.id = id;
this.name = name;
this.sex=sex;
}
/// <summary>
/// 重写基类的ToString()方法;
/// </summary>
/// <returns>以规定的格式返回结果字符串</returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder(id.ToString(), 100);
sb.Append(";");
sb.Append(string.Format("{0,-20}",name));
sb.Append(" ");
sb.Append(string.Format("{0,-20}",sex));
return sb.ToString();
}
}
执行代码:
private void btnDisplayData_Click(object sender, EventArgs e)
{
//
//初始化字典,包含两个条目;
//
Hashtable employees = new Hashtable(11);
string jammesID ="J230";
EmployeeData jammesData = new EmployeeData(jammesID, "jammess","男");
string michealID ="M001";
EmployeeData michealData = new EmployeeData(michealID, "micheal", "男");
employees.Add(jammesID, jammesData);
employees.Add(michealID, michealData);
//
//根据输入的员工编号在字典中查找该员工的数据并显示到列表框中;
//
string tempID = txtInput.Text.ToUpper();
object tempObject = employees[tempID];
if (tempObject != null)
{
EmployeeData tempEmployeeData = (EmployeeData)tempObject;
lbResult.Items.Add(tempEmployeeData.ToString());
}
else
{
lbResult.Items.Add("字典中没有此员工的条目!");
}
}
构建字典的关键步骤:
1、构建KEY类和数据类,键类用来定义KEY对象,数据类用来定义字典中的数据对象,这两个类是不能混淆的;
2、导入命名空间System.Collections,新建一个hashtable对象 hashtable myHashtable=new hashtable(51) 注意在给定一个素数作为参数时能得到最好的性能,确保这个参数比你要在字典中存储的条目(对象)数大;
3、根据键和数据填充上一步新建的hashtable对象:myHashtable.add(KeyClass newKey,DataClass newData);
4、根据键值在字典中查找对应的数据:
Object tempObject =myHashtable[ tempKey ];
DataClass tempData=( DataClass ) tempObject; //强类型转换成你定义的数据类型;
对数据tempData作想要的操作;
对比数组只能使用int型的有限大小的数字来作为下标来访问元素方便得多。而且在字典中的条目(相比数组中的元素个数)是可以动态增加和删除的。