#c#
#c#
Вопрос:
DinnerFun dinnerFun = new DinnerFun { PeepQty = (int)nudPeepQty.Value };
Я создаю новый объект класса DinnerFun и пытаюсь присвоить значение из числового объекта up down из формы переменной int PeepQty .
Когда я перехожу в режим отладки, я вижу, что nudPeepQty имеет числовое значение, но оно никогда не присваивается PeepQty , и мое конечное вычисление всегда заканчивается как 0.
Поскольку проблема может быть связана с чем-то, что я сделал за пределами этой строки кода, я добавлю остальную часть моего проекта ниже:
DinnerParty.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MonuEventPlanning
{
class DinnerFun
{
const int FoodCost = 25;
public int PeepQty;
decimal CostOfBeverage;
decimal CostOfDecorations;
decimal TotalCost;
public void CalcDrinks(bool HealthOption)
{
if (HealthOption)
{
CostOfBeverage = 5M;
}
else
{
CostOfBeverage = 20M;
}
}
public void CalcDecorations(bool FancyOption)
{
if (FancyOption)
{
CostOfDecorations = (PeepQty * 15M) 50M;
}
else
{
CostOfDecorations = (PeepQty * 7.5M) 30M;
}
}
public decimal CalcTotalCost(bool HealthyOption)
{
if (HealthyOption)
{
TotalCost = (CostOfDecorations CostOfBeverage) * .95M;
return TotalCost;
}
else
{
TotalCost = (CostOfBeverage CostOfDecorations) (PeepQty*25M);
return TotalCost;
}
}
}
}
————Form1.cs ————-
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MonuEventPlanning
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnCalc_Click(object sender, EventArgs e)
{
DinnerFun dinnerFun = new DinnerFun { PeepQty = (int)nudPeepQty.Value };
dinnerFun.CalcDrinks(cbxHealthy.Checked);
dinnerFun.CalcDrinks(cbxFancy.Checked);
DisplayCost();
}
public void DisplayCost()
{
DinnerFun dinnerFun = new DinnerFun();
tbxDisplayCost.Text = dinnerFun.CalcTotalCost(cbxHealthy.Checked).ToString("c");
}
}
}
Комментарии:
1. Как я уже говорил в предыдущем комментарии, вы можете просто отредактировать свой собственный вопрос.
2. Должны ли эти два блока кода как-то отличаться? Если это так, я этого не вижу.
3. Я думаю, что вы вставили туда один и тот же файл дважды. Действительно нужно увидеть реализацию класса DinnerFun, чтобы помочь вам.
4. : P отметил, я так и сделаю. = P
5. Переименуйте вторую переменную в «anotherdinnernotthesameast First». Исправьте это, предоставив методу DisplayCost аргумент.
Ответ №1:
Проблема в том, что вы создаете другой DinnerFun, который отличается от первого. Естественно, объект DinnerFun в DisplayCost будет иметь нуль для значения свойства. Возможно, вы имели в виду это…
private void btnCalc_Click(object sender, EventArgs e)
{
DinnerFun dinnerFun = new DinnerFun { PeepQty = (int)nudPeepQty.Value };
dinnerFun.CalcDrinks(cbxHealthy.Checked);
dinnerFun.CalcDrinks(cbxFancy.Checked);
DisplayCost(dinnerFun);
}
public void DisplayCost(DinnerFun dinnerFun)
{
tbxDisplayCost.Text = dinnerFun.CalcTotalCost(cbxHealthy.Checked).ToString("c");
}
Комментарии:
1. Вы правы. Это было частью проблемы. Но когда я удаляю этот новый объект DinnerFun… в нем говорится, что dinnerFun не существует в текущем контексте. Даже если я изменю метод нажатия кнопки на общедоступную пустоту…
2. неважно… я понял, где я должен объявить dinnerFun. Спасибо за вашу помощь. Я ДЕЙСТВИТЕЛЬНО ценю… это дает этому зеленому молодому кузнечику программиста надежду узнать, что такие люди, как вы, делают добро. = D
3. Не беспокойтесь… что-нибудь, чтобы помочь. SO — хорошее место для получения хороших ответов, и здесь есть даже лучшие программисты, чем я.