Проблема с доступом к методу класса

#c# #.net

#c# #.net

Вопрос:

Я практикую c # на примере телефонной книги, используя хэш-таблицу.

У меня есть класс, у которого есть 2 простых метода, описанных ниже, каким-то образом, если я использую свой метод 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");
        }

    }
  

Форма:

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

Ответ №1:

Это связано с тем, что вы создаете 2 разных экземпляра телефонной книги

Ответ №2:

При нажатии кнопки поиска появляется сообщение о том, что вы каждый раз создаете новый экземпляр телефонной книги. Таким образом, он создается новым и пустым. Ничего из того, что вы к нему добавили, не сохраняется. Вы должны убедиться, что он всегда выполняет поиск в одном экземпляре вашей телефонной книги из вашей формы.

Ответ №3:

Я думаю, это потому, что ваша телефонная книга пуста, в ней нет людей, поэтому она не возвращает результатов.

Ответ №4:

Вы получаете 0, потому что ваша хэш-таблица пуста. Вы должны сначала вызвать метод AddContactInfo, а затем SearchContactInfo.

Комментарии:

1. Я уже добавил в него данные телефона, и если я получу доступ к SearchContactInfo внутренне, я получу соответствующие номера.