class Bil
{
public string regnr
{
get { return regnr; }
set { regnr = value; }
}
public string maerke
{
get { return maerke; }
set { maerke = value; }
}
public int vaegt
{
get { return vaegt; }
set { vaegt = value; }
}
public bool traek
{
get { return traek; }
set { traek = value; }
}
public Bil(string regnr, string maerke, int vaegt, bool traek)
{
this.regnr = regnr;
this.maerke = maerke;
this.vaegt = vaegt;
this.traek = traek;
}
public double StatsAfgift(int vaegt, bool traek)
{
this.vaegt = vaegt;
this.traek = traek;
double statsAfgift = 0;
if (vaegt <= 800)
statsAfgift = vaegt * 50;
else if (vaegt > 800)
statsAfgift = 800 * 50 + 75 * vaegt - 800;
if (traek == true)
statsAfgift = statsAfgift + 200;
return statsAfgift;
}
}
Bil Honda = new Bil("225689", "Honda", 500, true);
Console.WriteLine("Statsafgiften på bilen er afsat til: {0:C}", Honda.StatsAfgift(500, true));
Bil Citroen = new Bil("985632", "Citroen", 400, false);
Bil Peugeot = new Bil("125697", "Peugeot", 650, true);
Bil[] bilSamling = new Bil[3];
bilSamling[0] = Honda;
bilSamling[1] = Citroen;
bilSamling[2] = Peugeot;
foreach (Bil b in bilSamling)
{
Console.WriteLine("Statsafgift på {0} er {1}", b.maerke, b.StatsAfgift(b.vaegt, b.traek))
}
只是澄清一下,bil = car。 Statsafgift =税。 Vaegt =体重,maerke =品牌,regnr =注册号码。
我需要打印出数组中的对象以及计算税的每个对象。在尝试编译代码时,我也遇到了一些堆栈溢出错误。
答案 0 :(得分:2)
问题在于
public string regnr
{
get { return regnr; }
set { regnr = value; }
}
尝试使用自动属性
public string Regnr { get; set; }
当您尝试为此目的分配regnr = value;
时出现溢出,您应该使用其他变量:
private string _regnr;
public string Regnr
{
get { return _regnr; }
set { _regnr = value; }
}
答案 1 :(得分:1)
您的stackoverflow错误来自您的属性。您需要定义一个本地私有变量来保存它们(因为它们当前正在调用它们)或者更好地将它们定义为自动属性;
public bool traek { get; set; }
看起来你不需要传递参数,因为它们已经在对象上了;
public double StatsAfgift() // don't need params heere
{
double statsAfgift = 0;
if (vaegt <= 800)
statsAfgift = vaegt * 50;
else if (vaegt > 800)
statsAfgift = 800 * 50 + 75 * vaegt - 800;
if (traek == true)
statsAfgift = statsAfgift + 200;
return statsAfgift;
}
允许你这样做;
Console.WriteLine("Statsafgift på {0} er {1}", b.maerke, b.StatsAfgift());
你甚至可以在没有foreach循环的情况下做到这一点;
Console.WriteLine(String.Join("\n", bilSamling.Select(b => String.Format("Statsafgift på {0} er {1}", b.maerke, b.StatsAfgift()))));