#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 внутренне, я получу соответствующие номера.