为什么我的for循环跳到最后?

时间:2013-06-21 15:30:08

标签: c# for-loop

我被要求创建一个迷你和基本的购物篮,代码正在运行但最近我创建的用于搜索数组的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#,我可能已经错过了一些愚蠢的事情感谢您提供的任何帮助

3 个答案:

答案 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。