我似乎无法在这里看到我的错误。我知道这不是最好的方法,但我有义务使用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;
}
}
}
答案 0 :(得分:4)
一旦找到所需的项目,您需要添加break
语句以退出循环:
if (product.Number == searchNr) //if we find the number
{
resultTextBox.Text = ((Item)product).ToString();
break;
}
否则您可能会找到该项目,但是您的循环会一直持续到结束,因此该数字不再与后续项目匹配,从而导致您的else
语句被评估。这就是为什么你经常出现在列表中的最后一个元素(即“107”条目)。