2011-11-10 125 views
1

我似乎無法看到我的錯誤在這裏。我知道這不是最好的方法,但我有義務使用Arraylist。C#arraylist搜索對象屬性問題

無論如何,我知道我的arraylist包含正確的元素,我想知道我的Item類的屬性Number是否與'searchNr'相同。

如果是,我想用ToString()打印出該元素。如果我搜索「107」(Arraylist中最後一個元素的Number屬性,我確實找到它了),但是找不到任何其他數字屬性。

public void Search(object sender, EventArgs e) 
    { 
     string searchNrString = searchTextBox.Text; 
     int searchNr = Int32.Parse(searchNrString); 


     foreach (Item product in item)  
     {         

      if (product.Number == searchNr) //if we find the number 
      { 
       resultTextBox.Text = ((Item)product).ToString();  

      } 
      else if (product.Number != searchNr) //if we don't find the number 
      { 
       string debug; 
       debug = string.Format("Could not find the number {0} arraylist :{1}", product.Number, item.Count); //debug här! 
       resultTextBox.Text = debug; 
      } 
     } 
    } 
+0

ArrayList在哪裏?另外,你使用的是什麼版本的.NET? –

回答

4

您需要添加一個break聲明退出循環一旦你找到所需的項目:

if (product.Number == searchNr) //if we find the number 
{ 
    resultTextBox.Text = ((Item)product).ToString();  
    break; 
} 

否則,你可能會找到該項目,但你的循環一直持續到年底,因此數不再匹配後續項目,導致您的else聲明被評估。這就是爲什麼你總是看到最後的元素進入你的清單(即「107」條目)。

+0

問題解決了,謝謝! – user1040281

+1

@ user1040281太棒了!您應該考慮使用調試器逐步執行代碼。如果你已經在你的循環中設置了一個斷點並且通過了它,那麼問題就會很明顯:) –

+0

好的,再次感謝下次嘗試,相當新的而不是使用調試器:) – user1040281