我被要求创建一个迷你和基本的购物篮,代码正在运行但最近我创建的用于搜索数组的for循环正在跳过循环内的所有代码。我提供了以下代码:
for (int i = 0; i < OrderItems.Count; i++)
{
//if a match is found it will add to the to the current quantity
if (OrderItems[i].ProductName == productName)
OrderItems[i].AddItem(latestValue, quantity);
//If no match was found in the list it will get added
else
OrderItems.Add(new OrderItem(productName, latestValue, quantity));
}
我是新的相当新的c#,我可能已经错过了一些愚蠢的事情感谢您提供的任何帮助
答案 0 :(得分:3)
我认为您的代码应如下所示:
bool found = false;
for (int i = 0; i < OrderItems.Count; i++)
{
//if a match is found it will add to the to the current quantity
if (OrderItems[i].ProductName == productName) {
OrderItems[i].AddItem(latestValue, quantity);
found = true;
}
}
//If no match was found in the list it will get added
if (! found)
OrderItems.Add(new OrderItem(productName, latestValue, quantity));
您需要循环浏览现有项目。如果找到,请更新该项目。检查完所有项目后,才会检查是否找到了该项目。如果您没有找到该项目,请将其添加为新项目。
原始代码无效,因为OrderItems
中没有项目,else
语句永远不会被执行。
如果方法实际更新项目,您可能需要考虑将方法重命名为UpdateItem
而不是AddItem
。
答案 1 :(得分:0)
请检查调试器中OrderItems的计数或打印它。由于在此函数/代码执行之前发生了其他错误,它是否为零。
答案 2 :(得分:0)
这意味着您的OrderItems为空,Count属性返回0,因此循环不会执行。如果希望循环执行,则必须具有OrderItem。