0

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

4

3 回答 3

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该方法是否实际更新项目。

于 2013-06-21T15:34:48.693 回答
0

请在调试器中检查 OrderItems 的计数或打印它。由于在此函数/代码执行之前发生了其他错误,它是否为零。

于 2013-06-21T15:35:00.897 回答
0

这意味着您的 OrderItems 为空,并且 Count 属性返回 0,因此不会执行循环。如果要执行循环,则必须具有 OrderItems。

于 2013-06-21T15:35:39.130 回答