Noob Concern:从新类对象为变量赋值。 C#

时间:2011-10-07 21:29:57

标签: c#

DinnerFun dinnerFun = new DinnerFun { PeepQty = (int)nudPeepQty.Value };

我正在创建一个DinnerFun类的新对象,并尝试将数字上下对象的值从表单赋值给int变量PeepQty。

当我进入调试模式时,我可以看到nadPeepQty确实有一个数值,但它从未分配给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 个答案:

答案 0 :(得分:1)

问题在于您正在创建另一个与第一个不同的DinnerFun。当然,DisplayCost中的DinnerFun对象的属性值为零。也许你的意思是......

    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"); 
    }