Ich versuche, von einer Basisklasse zu erben, aber ich bekomme einen Fehler, den ich nicht herausfinden kann. Dies ist die Basisklasse:C# Base Constructor Vererbung
class Item
{
protected string name;
public Item(string name)
{
this.name = name;
}
}
Und das ist die geerbte Klasse:
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;
}
}
Das Problem ist, diese Zeile:
public ItemToBuy(int lowPrice, int highPrice, int maxQuantity) : base(name)
wo 'name' mit der unterstrichen wird Fehlermeldung "Für das nicht statische Feld, die Methode oder die Eigenschaft 'Item.name' ist eine Objektreferenz erforderlich. Wenn ich sie durch ein String-Literal ersetze, ist die Fehlermeldung nicht vorhanden. Was mache ich? wro ng mit dem Erben des Konstruktors?
Wenn Sie nicht über einen Parameternamen im Konstruktor von ItemToBuy haben, können Sie nicht den Konstruktor der Basisklasse aufrufen, die einen Namen erfordert Parameter. Wenn Sie es nicht haben, fügen Sie der Basisklasse, die keine Parameter annimmt, einen Konstruktor hinzu oder ändern Sie Ihren ItemToBuy-Konstruktor so, dass ein Name-Parameter zur Übergabe an die Basisklasse – Steve
OK erforderlich ist. Denken Sie also eine Minute darüber nach. Die Basisklasse benötigt einen 'name'. Daher muss jede abgeleitete Klasse einen 'Namen' an den Basisklassenkonstruktor übergeben. Es kann das nicht einfach aus dem Nichts heraufbeschwören - entweder erzeugt die abgeleitete Klasse irgendwie einen 'Namen' und übergibt ihn an den Konstruktor der Basisklasse, oder' Name' muss ein Argument des Konstruktors der abgeleiteten Klasse sein und dann übergeben werden bis zum Konstruktor der Basisklasse. –
Mögliches Duplikat von [C# "Für das nicht statische Feld, die Methode oder Eigenschaft ist eine Objektreferenz erforderlich"] (https://stackoverflow.com/questions/4817967/c-sharp-an-object-reference-is- required-for-the-non-static-field-Methode-or-pr) – Sinatr