2013-11-09 60 views
0

你好,我正在嘗試爲一些課程做一個購物籃程序我已經給出了一個不同類型的「購物籃」,但我不能讓我的清單繼續更新。所以我所遇到的問題是'ShoppingBasketList()'需要一個返回類型,但在例子中,我給了它不。我花了很多年試圖解決爲什麼,我只是不能。如果有人有任何想法會是一個很大的幫助!購物籃清單方法需要一個返回類型c#

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); 
    } 
} 
+2

'公共ShoppingBasketList(){...}'是一個構造函數聲明。將名稱更改爲「ShoppingBasket」或將您的課程名稱更改爲「ShoppingBasketList」。 – MAV

+0

'公共類ShoppingBasket'需要構造函數'public ShoppingBasket'。 'ShoppingBasketList'在這裏並不是一個有效的構造函數名稱,在這種情況下,它將被視爲一種方法,它需要void或一個類型作爲返回類型。 –

回答

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

是一個構造函數聲明(因爲它沒有指定返回類型)。構造函數應該始終與它所屬的類具有相同的名稱。您的構造函數名爲ShoppingBasketList,而您的課程名爲ShoppingBasket。您應該將您的班級重命名爲ShoppingBasketList將您的構造函數重命名爲ShoppingBasket

例如。

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

您可以詳細瞭解構造函數here

+0

是的,有人調整了示例,然後將它們給了你,並重命名了這個類,並忘記了重命名構造函數。 –

+0

謝謝!不能相信我花了這麼長時間一個字:P –

0

由於您指定了return;,您的程序會通知您返回類型。因此請在您的for中刪除return

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... 
    } 
} 

相反,添加looping invariantnotFound(或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

0

除了上述那些正確說明您應該將ShoppingBasketList()重命名爲ShoppingBasket()的人之外,您不需要具有返回值的方法來查看您的項目。您已將項目聲明爲列表。從你的ShoppingBasket()對象,你會得到你的名單myShoppingBasket.Items