2011-05-06 49 views
1

我正在練習使用Hashtable的電話簿示例。訪問類方法的問題

我有一個類有2個簡單的方法,不知何故,如果我使用我的表單方法訪問類,我將無法獲得搜索結果,但如果我在類內調用它,我能夠,我已經添加了一個計數來檢查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"); 
     } 
} 

回答

2

這是因爲,要創建2個不同的電話本實例

+0

現貨!謝謝。 – k80sg 2011-05-06 11:02:48

1

在搜索一下,看來要創建每個德電話簿的新實例時間。所以它被創建爲新的和空的。沒有添加到它的內容被保留。您應該注意確保其始終從您的表單中搜索電話簿的單個實例。

0

我認爲這是因爲你的電話簿是空的,你沒有人,所以它不會返回任何結果。

0

您正在收到0,因爲您的散列表爲空。您應該先調用AddContactInfo方法,然後再調用SearchContactInfo。

+0

我已經在其中添加了電話詳細信息,如果我在內部訪問SearchContactInfo,我會相應地得到這些電話號碼。 – k80sg 2011-05-06 11:00:51