C#非泛型集合类-HashTable使用实例电话本
本例创建一个电话本,使用HashTable存储电话信息,每个人的姓名和电话作为一个整体存储,使用姓名作为键值,可以根据姓名查询电话号码。
1、创建控制台应用程序。
2、建立一个电话本类TelNote,此类只包括电话本中的姓名,电话号字段和属性。
3、建立一个编辑电话本类TelNoteEdit,此类中完成电话本的操作,包括存在电话本信息,根据姓名查找电话号码等功能。
4、在主函数中调用上面类和方法,实现电话本编辑功能。
using System;
using System.Collections;
//创建电话本类,属性有姓名和电话
public class TelNote
{
private string name; //姓名
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
private string number; //电话
public string Number
{
get
{
return number;
}
set
{
number = value;
}
}
}
public class TelNoteEdit
{
//创建哈希表
public Hashtable httels = new Hashtable();
//添加电话信息
public void Add(TelNote tel)
{
//如果电话本为空则存储电话
if (httels.Count == 0)
{
// Hashtable ht = new Hashtable();
httels.Add(tel.Name, tel);
}
else
{
//如果电话本不为空,检查是否存在该姓名
if (httels.Contains(tel.Name))
{
//如果存在则修改其电话
httels[tel.Name] = tel.Number;
}
else
{
//如果不存在,则新建电话信息
httels.Add(tel.Name, tel);
}
}
}
//根据姓名返回电话信息
public TelNote GetByName(string name)
{
foreach (Object tel in httels.Values)
{
TelNote mytel = (TelNote)tel;
if (name == mytel.Name)
{
return mytel;
}
}
return null;
}
}
class Program
{
static void Main(string[]args)
{
//创建两个TelNote对象
TelNote mytel1 = new TelNote();
mytel1.Name = "范跑跑";
mytel1.Number = "81161234";
TelNote mytel2 = new TelNote();
mytel2.Name = "郭跳跳";
mytel2.Number = "62337878";
//将信息添加到哈希表中
TelNoteEdit teledit = new TelNoteEdit();
teledit.Add(mytel1);
teledit.Add(mytel2);
Console.WriteLine("哈希表中元素的个数为{0}", teledit.httels.Count);
foreach (DictionaryEntry myde in teledit.httels)
{
Console.WriteLine("\t{0}\t{1}", myde.Key, myde.Value);
}
//显示电话本的姓名和电话
foreach (object obj in teledit.httels.Values)
{
TelNote tn = (TelNote)obj;
Console.WriteLine("\t{0}\t{1}", tn.Name, tn.Number);
}
//查询范跑跑的电话
TelNote mytel = teledit.GetByName("范跑跑");
Console.WriteLine("{0}的电话是{1}", mytel.Name, mytel.Number);
Console.ReadKey();
}
}