В настоящее время у меня есть список, который отображает дату, тип торта и размер. Я хочу добавить стоимость в список, но у меня проблемы. В настоящее время он отображает нуль для стоимости. Стоимость отображается на ярлыке (lblRoundCost). У меня есть базовый класс с именем Cake и два подкласса RoundCake и SquareCake. Я не уверен, если это правильный код для базового класса:Добавление стоимости в ListBox
class Cake
{
private const int CostOfFoodPerPerson = 25;
public int size;
private bool chocolateIcing;
protected DateTime cakeDate;
decimal cost;
public Cake(int numberOfPeople, bool chocolateIcing, DateTime cakeDate)
{
this.chocolateIcing = chocolateIcing;
Size = size;
this.cakeDate = cakeDate;
Cost = cost;
}
public virtual decimal Cost
{
get { return cost; }
set { cost = value; }
}
public virtual int Size
{
get { return size; }
set { size = value; }
}
public virtual bool ChocolateIcing
{
set { chocolateIcing = value; }
}
public virtual decimal CalculateCost()
{
decimal CostOfIcing = 0;
if (chocolateIcing)
CostOfIcing = (Size * 1.5M) + 10M;
else
CostOfIcing = 0;
decimal TotalCost = CostOfIcing + CostOfFoodPerPerson;
return TotalCost;
}
public DateTime CakeDate
{
set { cakeDate = value; }
}
}
}
RoundCake код
class RoundCake : Cake
{
bool fruitOption;
public RoundCake(int size, bool fruitOption, bool chocolateIcing, DateTime cakeDate)
: base(size, chocolateIcing, cakeDate)
{FruitOption = fruitOption;}
public bool FruitOption
{
set { fruitOption = value; }
}
public override decimal CalculateCost()
{
decimal totalCost;
if (fruitOption)
{
totalCost = base.CalculateCost();
return totalCost + (totalCost * .05M);
}
else
{
totalCost = base.CalculateCost() ;
return totalCost;
}
}
public override string ToString()
{
return String.Format("{0,-20}{1,2}{2,20}{2,20}", cakeDate.ToShortDateString(), "RC",Size,Cost);
}
Form1 кода
private void btnRound_Click_1(object sender, EventArgs e)
{
lstCake.Items.Add(roundCake);
}
roundCake = new RoundCake((int)nudRound.Value, chbFruit.Checked, chbChocoRound.Checked,
dtpRound.Value.Date);
lblRoundCost.Text = roundCake.CalculateCost().ToString("c");
Ваш код выглядит неполным и несовместимым для загрузки. У вас есть поля, объявленные вне классов и назначений вне методов. – Tim
@Tim Полный код слишком длинный для публикации. Я не уверен, что мне разрешено публиковать все. – Strongbad2143
Опубликовать достаточно, чтобы показать, что вы пытаетесь сделать, вам не нужно публиковать все (и вы не должны), но публикация mish-mash кода не принесет вам никакой пользы, и люди будут иметь труднее время, пытаясь помочь вам. Отправьте базовый класс, класс «RoundCake» и пример того, как вы создаете экземпляр «RoundCake» в качестве стартера, и давайте посмотрим, можем ли мы выяснить эту проблему. – Tim