J'essaie d'hériter d'une classe de base, mais j'obtiens une erreur que je n'arrive pas à comprendre. Ceci est la classe de base:C# Héritage du constructeur de base
class Item
{
protected string name;
public Item(string name)
{
this.name = name;
}
}
Et c'est la classe héritée:
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;
}
}
La question est cette ligne:
public ItemToBuy(int lowPrice, int highPrice, int maxQuantity) : base(name)
où 'nom' est soulignée par la message d'erreur "Une référence d'objet est requise pour le champ non-statique, la méthode ou la propriété" Item.name ".Si je le remplace par une chaîne littérale le message d'erreur n'est pas là. ng avec hériter du constructeur?
Si vous ne disposez pas d'un nom de paramètre dans le constructeur de ItemToBuy, vous ne pouvez pas appeler le constructeur de la classe de base qui nécessite un nom paramètre. Si vous ne l'avez pas, ajoutez un constructeur à la classe de base qui ne prend aucun paramètre ou changez votre constructeur ItemToBuy pour exiger un paramètre de nom à transmettre à la classe de base – Steve
OK, alors pensez à cela pendant une minute. La classe de base a besoin d'un 'nom'. Par conséquent toute classe dérivée va devoir passer un 'nom' au constructeur de la classe de base. Il ne peut pas simplement le faire sortir de nulle part - soit la classe dérivée crée un 'nom' en quelque sorte et le passe au constructeur de la classe de base, ou' name' doit être un argument du constructeur de la classe dérivée, puis passé à travers au constructeur de la classe de base. –
Copie possible de [C# "Une référence d'objet est requise pour le champ, la méthode ou la propriété non statique"] (https://stackoverflow.com/questions/4817967/c-sharp-an-object-reference-is- required-for-the-non-static-field-method-or-pr) – Sinatr