0

您好,我正在尝试为一些课程制作一个购物篮程序,我已经获得了不同类型的“购物篮”,但我无法让我的列表不断更新。所以我遇到的问题是'ShoppingBasketList()'需要一个返回类型,但在我得到的例子中它没有。我花了很长时间试图找出原因,但我就是不能。如果有人有任何想法将是一个很大的帮助!

public class ShoppingBasket
{
    public List<ShoppingBasketItem> Items { get; private set; }        


     public ShoppingBasketList()
    {
      Items = new List<ShoppingBasketItem>();
    }

    internal static void AddToList(string productName, int quantity, decimal latestPrice)
    {
        for (int i = 0; i < Items.Count; i++)
        {
            // if the item is already in the list
            if (Items[i].ItemName == productName)
            {
                Items[i].UpdateShoppingBasketList(quantity, latestPrice);
                return;
            }
        }

        // It's not in the list
        ShoppingBasketItem sbi = new ShoppingBasketItem(productName, quantity, latestPrice);
        Items.Add(sbi);
    }
}
4

3 回答 3

2
public ShoppingBasketList()
{
    Items = new List<ShoppingBasketItem>();
}

是构造函数声明(因为它没有指定返回类型)。构造函数应始终与其所属的类同名。ShoppingBasketList当你的类被调用时你的构造函数被调用ShoppingBasket。您应该将您的类重命名为ShoppingBasketList 将您的构造函数重命名为ShoppingBasket.

例如。

public ShoppingBasket()
{
    Items = new List<ShoppingBasketItem>();
}

您可以在此处阅读有关构造函数的更多信息。

于 2013-11-09T23:05:51.393 回答
0

您的程序正在通知您返回类型,因为您指定了return;. 因此删除return你的for.

for (int i = 0; i < Items.Count; i++)
{
    // if the item is already in the list
    if (Items[i].ItemName == productName)
    {
        Items[i].UpdateShoppingBasketList(quantity, latestPrice);
        return; //replace me with something else...
    }
}

相反,添加一个循环不变量 notFound(或break)。

Boolean notFound = true;
for (int i = 0; i < Items.Count && notFound; i++)
{
    // if the item is already in the list
    if (Items[i].ItemName == productName)
    {
        Items[i].UpdateShoppingBasketList(quantity, latestPrice);
        notFound = false; //exiting the the loop
    }
}

哦,您的方法ShoppingBasketList被编写为构造函数(任何public <Insert Name Here>构造函数),例如在声明类时会调用它ShoppingBasket sb = new ShoppingBasket();

 public ShoppingBasketList()
{
  Items = new List<ShoppingBasketItem>();
}

要么将它重命名为你的类名,public ShoppingBasket要么完全删除它并Itemsdeclaration.

于 2013-11-09T23:03:23.723 回答
0

除了上面那些正确声明您应该将 ShoppingBasketList() 重命名为 ShoppingBasket() 的人之外,您不需要具有返回值的方法来查看您的商品。您已经将 Items 声明为 List。从您的 ShoppingBasket() 对象中,您将通过 myShoppingBasket.Items 获取您的列表

于 2013-11-09T23:09:58.410 回答