c# – 具有3个参数的Hashtable

如何使用三个参数创建hashTable?我想使用hashTable和字典存储电话号码,姓名和地址.电话号码作为密钥,名称,地址作为其值.但我只能输入两个数据,电话号码和姓名.如何在hashTable中保存电话号码,姓名,地址?
Hashtable phoneBook;

public FrmPhoneBook()
{
    InitializeComponent();
    phoneBook = new Hashtable();
}

public void addNewPhoneBook(string name,string tel,string add)
{
    string names = name;
    string telp = tel;
    string address = add;

    if (!phoneBook.ContainsKey(telp))
    {
        phoneBook.Add(telp,names);
        getDetails();
    }
}

public void getDetails()
{
    lvDetails.Items.Clear();
    foreach (DictionaryEntry values in phoneBook)
    {
        lvDetails.Items.Add(values.Value.ToString());
        lvDetails.Items[lvDetails.Items.Count - 1].SubItems.Add(
           values.Key.ToString());  
    }
}

解决方法

将所有用户数据放入一个类:
public class User
{
    public string Name { get; set; }
    public string Address { get; set; }
    public string PhoneNumber { get; set; }
}

然后处理如下:

Dictionary<string,User> reverseLookUp = new Dictionary<string,User>();
User user;

// Fill dictionary
user = new User { Name = "John",Address = "Baker Street",PhoneNumber = "012345" };
reverseLookUp.Add(user.PhoneNumber,user);
user = new User { Name = "Sue",Address = "Wall Street",PhoneNumber = "333777" };
reverseLookUp.Add(user.PhoneNumber,user);

// Search a user
string phoneNumber = "012345";
if (reverseLookUp.TryGetValue(phoneNumber,out user)) {
    Console.WriteLine("{0},{1},phone {2}",user.Name,user.Address,user.PhoneNumber);
} else {
    Console.WriteLine("User with phone number {0} not found!",phoneNumber);
}

// List all users
foreach (User u in reverseLookUp.Values) {
    Console.WriteLine("{0},u.Name,u.Address,u.PhoneNumber);
}

您还可以为此目的创建专用字典:

public class PhoneDict : Dictionary<string,User>
{
    public void Add(User user)
    {
        Add(user.PhoneNumber,user);
    }
}

然后按如下方式添加用户

PhoneDict phoneDict = new PhoneDict();
User user;

// Fill dictionary
user = new User { Name = "John",PhoneNumber = "012345" };
phoneDict.Add(user);
user = new User { Name = "Sue",PhoneNumber = "333777" };
phoneDict.Add(user);

相关文章

C#项目进行IIS部署过程中报错及其一般解决方案_c#iis执行语句...
微信扫码登录PC端网站应用的案例(C#)_c# 微信扫码登录
原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...