微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐