尝试添加值时,只需提供新值C#

时间:2014-09-12 07:05:41

标签: c#

我正在建立一个银行业务ap,跟踪某人在银行的资金(称为Saldo) 所以我创建了一个为帐户指定名称的构造函数,这可以跟踪everys人的平衡 但是在我目前的代码中,我只能添加一次金钱,当我更改输入时,它会自动更改为该值并且不会添加或减去(它会被用来做什么)

代码的重要部分是

    private void StortL_Click(object sender, EventArgs e)
    {
        Bankrekening BankrekeningL = new Bankrekening(bankrekeningLinks.Naam, 0);

        double saldodouble = 0;
        int bedrag = 0;
        int decimalL = 0;
        int wholeL = 0;
        decimalL = Convert.ToInt32(tbDecimaleL.Text);
        wholeL = Convert.ToInt32(tbWholeL.Text) * 100;
        bedrag = wholeL + decimalL;
        Bankrekening BankrekeningL2 = new Bankrekening(bankrekeningLinks.Naam, BankrekeningL.Saldo);
        BankrekeningL2.Stort(bedrag);
        lbIsaldoL.Text = Convert.ToString(BankrekeningL2.Saldo);
    }
}
}

class Bankrekening
{
    //datavelden
    private int rekeningnummer;
    private string naam;
    private int saldo;
    private static int volgendeVrijeRekeningnummer = 2001;
    //properties
    public int Rekeningnummer { get { return rekeningnummer; } }
    public string Naam { get { return naam; } }
    public int Saldo { get { return saldo; } }

    //constructors
    public Bankrekening(string naam)
    {
        this.naam = naam;
        saldo = 0;
        //volgendeVrijeRekeningnummer is klassevariable,
        //je kunt this niet gebruiken
        rekeningnummer = volgendeVrijeRekeningnummer++;
    }

    public Bankrekening(string naam, int saldo)     
    {
        this.naam = naam;
        this.saldo = saldo;
    } 

    public void NeemOp(int bedrag)
    {   
       saldo = saldo+bedrag;
    }

    public void Stort(int bedrag)
    {
        saldo = saldo + bedrag;    
    }

    public void MaakOverNaar(Bankrekening andereRekening, int bedrag)
    {
        //zelf invullen
    } 
}

所以目前正在发生的是,不是将文本框中的数字添加到saldo的值(文本框的先前输入),而是将saldo的值设置为文本框中的任何值。 。 例如。我想在我之前添加100欧元的银行帐户中加50,所以我跟踪余额的标签应该给150但是它给了我50。

2 个答案:

答案 0 :(得分:0)

您每次创建一个新对象,而不是为同一个人使用相同的对象。 因此,如果您已经为人员AAA创建了一个对象 他正在加钱,你需要使用创建的同一个对象,而不是再创建它。

这条线我认为是问题所在:

  

Bankrekening BankrekeningL = new Bankrekening(bankrekeningLinks.Naam,0);

可能的解决方案:

您可以保留Bankrekening对象的列表,并使用LINQ检查对象是否已存在。

如果它存在则使用相同的对象,否则创建一个新对象。

这样的东西
List<Bankrekening> list = new  List<Bankrekening>();
 if(list.Any(x=>x.Name == "XYZ")> 
 // your code to add
else
    Bankrekening BankrekeningL2 = new Bankrekening(bankrekeningLinks.Naam, BankrekeningL.Saldo);

答案 1 :(得分:0)

您需要将函数外部的BankrekeningL声明移到表单中以保留其值,目前您每按一次按钮都会创建一个新实例

Bankrekening BankrekeningL;
public FormName()
{
    BankrekeningL = new Bankrekening("name");
}

private void StortL_Click(object sender, EventArgs e)
{
    double saldodouble = 0;
    int decimalL = Convert.ToInt32(tbDecimaleL.Text);
    int wholeL = Convert.ToInt32(tbWholeL.Text) * 100;
    int bedrag = wholeL + decimalL;
    BankrekeningL.Stort(bedrag);
    lbIsaldoL.Text = BankrekeningL.Saldo.ToString();
}