我想從基類繼承,但我得到一個我找不到的錯誤。這是基類:C#基礎構造函數繼承
class Item
{
protected string name;
public Item(string name)
{
this.name = name;
}
}
這是繼承的類:
class ItemToBuy : Item
{
private int lowPrice;
private int highPrice;
private int maxQuantity;
public ItemToBuy(int lowPrice, int highPrice, int maxQuantity) : base(name)
{
this.lowPrice = lowPrice;
this.highPrice = highPrice;
this.maxQuantity = maxQuantity;
}
}
的問題是這一行:
public ItemToBuy(int lowPrice, int highPrice, int maxQuantity) : base(name)
其中 '名' 是強調與錯誤消息「非靜態字段,方法或屬性'Item.name'需要對象引用,如果用字符串文字替換它,錯誤消息不存在。 ng繼承構造函數?
如果你沒有在ItemToBuy的構造函數的參數名稱,不能調用基類的,需要一個名稱的構造參數。如果你沒有它,那麼向不帶參數的基類添加一個構造函數,或者改變你的ItemToBuy構造函數來需要一個名稱參數傳遞給基類 – Steve
好吧,那麼考慮一下這個問題。基類需要一個'name'。因此,任何派生類都需要將'name'傳遞給基類構造函數。它不能簡單地將它變出 - 無論是派生類以某種方式創建一個'name'並將其傳遞給基類的構造函數,或者'name'必須是派生類的構造函數的參數,然後傳遞通過基類的構造函數。 –
[C#「非靜態字段,方法或屬性需要對象引用」](https://stackoverflow.com/questions/4817967/c-sharp-an-object-reference-is-必需的非靜態字段方法或公關) – Sinatr