0

Hello I am trying to make a shopping basket program for some coursework I have been given a diffent type of "Shopping basket" to follow but i cant get my list to keep updating. so the problem im having is the 'ShoppingBasketList()' needs a return type but in the example i got given it does not. i have spent ages trying to work out why and i just cant. if anyone has any idea would be a great help!

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完全に削除して で初期化しItemsますdeclaration

于 2013-11-09T23:03:23.723 に答える
0

ShoppingBasketList() を ShoppingBasket() に名前変更する必要があると正しく述べている上記の人々に加えて、アイテムを表示するために戻り値を持つメソッドは必要ありません。Items を List として既に宣言しています。ShoppingBasket() オブジェクトから、myShoppingBasket.Items によってリストを取得します。

于 2013-11-09T23:09:58.410 に答える