C#arraylist搜索对象属性问题

时间:2011-11-10 18:12:41

标签: c# .net

我似乎无法在这里看到我的错误。我知道这不是最好的方法,但我有义务使用Arraylist。

无论如何我知道我的arraylist包含正确的元素,我想知道我的Item类的属性Number是否与' searchNr'相同。

如果是,我想使用ToString()打印出该元素。如果我搜索" 107" (Arraylist中我最后一个元素的Number属性,我确实找到了。但是找不到任何其他数字属性。除了Ifals之外,我可以使用除If语句以外的任何东西吗?

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

1 个答案:

答案 0 :(得分:4)

一旦找到所需的项目,您需要添加break语句以退出循环:

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

否则您可能会找到该项目,但是您的循环会一直持续到结束,因此该数字不再与后续项目匹配,从而导致您的else语句被评估。这就是为什么你经常出现在列表中的最后一个元素(即“107”条目)。