我正在建立一个银行业务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。
答案 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();
}