私は基底クラスから継承しようとしていますが、私は理解できないというエラーが発生しています。これは、基底クラスである:C#Baseコンストラクタの継承
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'にオブジェクト参照が必要です。文字列リテラルで置き換えると、エラーメッセージは表示されません。コンストラクタを継承していますか?
あなたがItemToBuyのコンストラクタにパラメータ名を持っていない場合、あなたが名前を必要とする基底クラスのコンストラクタを呼び出すことはできませんパラメータ。あなたがそれを持っていない場合は、パラメータを取らない基本クラスにコンストラクタを追加するか、Nameクラスを基本クラス – Steve
に渡すようにItemToBuyコンストラクタを変更してください。基本クラスには 'name'が必要です。したがって、派生したクラスはいずれも 'name'を基本クラスのコンストラクタに渡す必要があります。これは、空から派生するだけでは、派生クラスはどうにかして 'name'を作成してそれを基本クラスのコンストラクタに渡すか、' name'は派生クラスのコンストラクタの引数でなければなりません基本クラスのコンストラクタに渡します。 –
[C# "非静的フィールド、メソッド、またはプロパティにオブジェクト参照が必要です"]の複製があります。(https://stackoverflow.com/questions/4817967/c-sharp-an-object-reference-is- static-field-method-or-pr) – Sinatr