C# 用一个类计算,钱减去账单

C# 用一个类计算,钱减去账单,c#,C#,当我计算零钱(钞票)时,它总是显示为零(0)。我不知道我哪里弄错了 这是我的班级: class changecalc { int a, b; public int B { get { return b; } set { b = value; } } public int A { get { return a; } set { a = value; } } publi

当我计算零钱(钞票)时,它总是显示为零(0)。我不知道我哪里弄错了

这是我的班级:

class changecalc
{
    int a, b;

    public int B
    {
        get { return b; }
        set { b = value; }
    }

    public int A
    {
        get { return a; }
        set { a = value; }
    }
    public changecalc()
    {
        A = 0;
        B = 0;
    }
             public changecalc(int C,int D)
    {
        C = a;
        D = b;
    }
    public int calculate()
    {
       //this is the money-bill
        return a - b;
    }

}
以我的名义:

if (int.Parse(txtboxmoney.Text) >= int.Parse(txtboxbill.Text)) {
    //display the change
    changecalc aa = new changecalc(int.Parse(txtboxmoney.Text), int.Parse(txtboxbill.Text));
    change.Text = aa.calculate().ToString();

}
else {
    //error if money is lower than the bill
    txtboxmoney.Clear();
    change.Clear();
    MessageBox.Show("Your Money is not enough");
}

我错过了哪里?

以下函数用零更新C&D,同时应更新支持字段a&b。这使得字段a和b默认为零,因此差值始终为零

public changecalc(int C,int D)
{
    C = a;
    D = b;
}
更改代码如下:

public changecalc(int C,int D)
{
    a = C;
    b = D;
}

你也可以考虑重构你的类:

  • 重命名字段,使其可读
  • 删除支持字段(a和b)。对于当前用例,您并不真正需要支持字段。编译器将为您生成它们
  • 更新代码:

    class ChangeCalculator
    {
      public int Money { get; set; }
    
      public int Bill { get; set; }
    
      public ChangeCalculator()
      {
         Money = 0;
         Bill = 0;
      }
    
      public ChangeCalculator(int money, int bill)
      {
         Money = money;
         Bill = bill;
      }
    
      public int Calculate()
      {
        return Money - Bill;
      }
    }
    

    以下函数用零更新C&D,同时应更新支持字段a&b。这使得字段a和b默认为零,因此差值始终为零

    public changecalc(int C,int D)
    {
        C = a;
        D = b;
    }
    
    更改代码如下:

    public changecalc(int C,int D)
    {
        a = C;
        b = D;
    }
    

    你也可以考虑重构你的类:

  • 重命名字段,使其可读
  • 删除支持字段(a和b)。对于当前用例,您并不真正需要支持字段。编译器将为您生成它们
  • 更新代码:

    class ChangeCalculator
    {
      public int Money { get; set; }
    
      public int Bill { get; set; }
    
      public ChangeCalculator()
      {
         Money = 0;
         Bill = 0;
      }
    
      public ChangeCalculator(int money, int bill)
      {
         Money = money;
         Bill = bill;
      }
    
      public int Calculate()
      {
        return Money - Bill;
      }
    }
    

    它说不包含接受2个参数的构造函数?谢谢,我得到了它。我更新了函数名以匹配类名。这些属性也被标记为公共属性。请查看更新的答案谢谢,这有助于了解更多信息!:)如果有帮助,请接受它作为答案。它说不包含接受2个参数的构造函数?谢谢。我得到了它。已更新函数名以匹配类名。这些属性也被标记为公共属性。请查看更新的答案谢谢,这有助于了解更多信息!:)如果有帮助的话,请接受这个答案。。