Hashtable有3个参数

asi*_*sik 6 c# dictionary hashtable

如何制作hashTable三个参数?我想用a hashTable和a 存储电话号码,姓名和地址dictionary.电话号码作为密钥,名称,地址作为其值.但我只能输入两个数据,电话号码和姓名.如何保存电话号码,姓名,地址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());  
    }
}
Run Code Online (Sandbox Code Playgroud)

par*_*mar 5

您可以将密钥作为电话号码,将值作为结构,其中有两个成员,一个是地址,一个是名称.另外考虑移动到Dictionary,因为它是类型安全的

        struct User
        {
            public string Name;
            public string Address;
        }

       static void Main(string[] args)
       {
           Dictionary<string, User> hash = new Dictionary<string, User>();

          //To add to the hash
           hash.Add( "22255512282" , 
                new User(){ Name = "foo" , Address = "Bar" });

          //To lookup by key
          User user;
          if (hash.TryGetValue("22255512282", out user))
          {
             Console.WriteLine("Found " + user.Name);
          }

      }
Run Code Online (Sandbox Code Playgroud)


Oli*_*bes 4

将所有用户数据放入一个类中:

public class User
{
    public string Name { get; set; }
    public string Address { get; set; }
    public string PhoneNumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后处理如下:

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}, {1}, phone {2}", u.Name, u.Address, u.PhoneNumber);
}
Run Code Online (Sandbox Code Playgroud)

您还可以为此目的创建一个专门的字典:

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

然后添加用户如下:

PhoneDict phoneDict = new PhoneDict();
User user;

// Fill dictionary
user = new User { Name = "John", Address = "Baker Street", PhoneNumber = "012345" };
phoneDict.Add(user);
user = new User { Name = "Sue", Address = "Wall Street", PhoneNumber = "333777" };
phoneDict.Add(user);
Run Code Online (Sandbox Code Playgroud)