访问类方法有问题

时间:2011-05-06 10:51:36

标签: c# .net

我正在练习使用Hashtable的电话本示例进行c#。

我有一个类,下面有两个简单的方法,不知怎的,如果我使用我的表单方法来访问类,我将无法获得搜索结果,但如果我在类中调用它,我能够,我已经添加了一个计数来检查pPhonebook中是否有任何项目,并且在外面访问时它总是0,感谢有人可以指出我的错误,它是否与我的Hashtable声明有关?感谢。

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

    }

形式:

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

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

在搜索点击中,您似乎每次都要创建一个新的电话簿实例。所以它被创造出新的空洞。您保留的任何内容都不会保留。您应该确保它始终从表单中搜索电话簿的单个实例。

答案 2 :(得分:0)

我认为这是因为你的电话簿是空的,你没有人,所以没有结果。

答案 3 :(得分:0)

您的哈希表为空,因此为0。您应首先调用AddContactInfo方法,而不是SearchContactInfo。