我收到此代码一个错误:
An object reference is required for the non-static field, method, or property
我正在尝试从派生类继承itemNo变量,以将其放入构造函数中,但是由于某种原因,它不接受它。
完整代码:
public class InvItem
{
protected int itemNo;
protected string description;
protected decimal price;
public InvItem()
{
}
public InvItem(int itemNo, string description, decimal price)
{
this.itemNo = itemNo;
this.description = description;
this.price = price;
}
public int ItemNo
{
get
{
return itemNo;
}
set
{
itemNo = value;
}
}
public string Description
{
get
{
return description;
}
set
{
description = value;
}
}
public decimal Price
{
get
{
return price;
}
set
{
price = value;
}
}
public virtual string GetDisplayText(string sep)
{
return itemNo + sep + description + " (" + price.ToString("c") + ")";
}
}
public class Plant : InvItem
{
private decimal size;
public Plant()
{
}
public Plant(int itemNumber, string description, decimal price, decimal size) : base(itemNo, description, price)
{
this.Size = size;
}
public decimal Size
{
get
{
return size;
}
set
{
size = value;
}
}
public override string GetDisplayText(string sep)
{
return base.GetDisplayText(sep) + " (" + size + ")";
}
}
它发生在带有参数的Plant类构造函数中。我尝试将其设置为公共,私有和受保护,但是它们都产生相同的结果。
当您调用base
构造函数时,这些变量甚至都不存在(尚未构造基类)。
因此,您不能在base
构造函数调用中将类成员传递给它。相反,您需要:
public Plant(int itemNumber, string description, decimal price, decimal size) :
base(itemNumber, description, price)
{
}
这会将提供的参数传递Plant
给基类,这正是您想要的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句