C# 访问类方法的问题

C# 访问类方法的问题,c#,.net,C#,.net,我正在用一个使用哈希表的电话簿示例练习c# 我有一个类,下面有两个简单的方法,如果我使用我的form方法访问该类,我将无法获得搜索结果,但如果我在我能够访问的类内调用它,我会添加一个计数以检查pPhonebook中是否有任何项,并且在外部访问时总是0,如果有人能指出我的错误,我将不胜感激,这与我的哈希表声明有关吗?谢谢 public class Phonebook { public Hashtable pPhoneBook = new Hashtable(); public v

我正在用一个使用哈希表的电话簿示例练习c#

我有一个类,下面有两个简单的方法,如果我使用我的form方法访问该类,我将无法获得搜索结果,但如果我在我能够访问的类内调用它,我会添加一个计数以检查pPhonebook中是否有任何项,并且在外部访问时总是0,如果有人能指出我的错误,我将不胜感激,这与我的哈希表声明有关吗?谢谢

public class Phonebook
{
    public Hashtable pPhoneBook = new Hashtable();

    public void AddContactInfo(string perName, string perContact)
    {
        pPhoneBook.Add(perName, perContact);
        SearchContactInfo(perName); // This is okay
    }

    public void SearchContactInfo(string perName)
    {
        MessageBox.Show(pPhoneBook.Count.ToString());
        if (pPhoneBook.ContainsKey(perName))
        {
            string value = (string)pPhoneBook[perName];
            MessageBox.Show(value);
        }
        else
        {
            MessageBox.Show("Not Found");
        }

    }
表格:


这是因为,您正在创建两个不同的电话簿实例

在搜索单击中,您似乎每次都在创建一个新的电话簿实例。因此,它被创建为新的、空的。您添加到其中的任何内容都不会保留。您应该查看以确保它总是从表单中搜索电话簿的单个实例。

我认为这是因为您的电话簿是空的,您的电话簿中没有人,因此它不会返回任何结果。

您得到0是因为您的哈希表是空的。您应该先调用AddContactInfo方法,然后再调用SearchContactInfo。

我已经在其中添加了电话详细信息,如果我在内部访问SearchContactInfo,我会相应地获得号码。
private void txtSearch_Click(object sender, EventArgs e)
{
    if (textBox3.Text != "")
      {
        Phonebook pB = new Phonebook();
        pB.SearchContactInfo(textBox3.Text); // Not Okay
      }
      else
      {
        MessageBox.Show("Please fill in the Name field");
      }
}

private void txtAdd_Click(object sender, EventArgs e)
{
      if (textBox1.Text != "" & textBox2.Text != "")
      {
          Phonebook pB = new Phonebook();
          pB.AddContactInfo(textBox1.Text, textBox2.Text);
          textBox1.Text = "";
          textBox2.Text = "";
      }
      else
      {
          MessageBox.Show("Please fill in both Name and Contact field");
      }
}