0

このコードからアクセスしたい変数があります。変数は次のとおりです
。balance これは Form3 のコードのスニペットです。

    public static int balance = 0;
    private void button1_Click(object sender, EventArgs e)
    {
       int deposit=int.Parse(textBox1.Text);
       if (deposit == 0)
       {
           MessageBox.Show("Please enter a value greater than 0");
       }
       else
       {

           balance = balance + deposit;
           MessageBox.Show("Thank you, your balance has been updated.");
       }
    }

お金を入金したいときは、残高を更新して、別のフォームから表示するときに、編集された残高 (入金した金額で更新された残高) である必要があるようにします。残高を更新するのに苦労しています。更新するフォームにいるときは機能しますが、別のフォームで表示すると、残高が 0 と表示されます。

int bal = Form3.balance;
    public int Balance()
    {
        //MessageBox.Show("Your current balance is: "+bal);
        return bal;
    }
    private void button1_Click(object sender, EventArgs e)
    {
       /*if (bal < 0)
        {
            MessageBox.Show("You don't have enough cash in your account, please deposit some money before you can continue");
        }
        else*/ 
        if (bal < 5)
        {
            MessageBox.Show("Please credit your account before you can withdraw");
        }
        else
        {
            MessageBox.Show("Please wait for your £5 to be dispensed");
            bal = bal - 5;

            Balance();//I thought if I returned the balance variable from a different method that it would still update regardless
            //I am struggling making sure that the balance gets updated.
        }

    }

残高変数がグローバルに更新されるようにするにはどうすればよいですか??

4

2 に答える 2

1

int値型です。割り当てを行う場合:

int bal = Form3.balance;

balあなたは価値のコピーを入れていForm3.balanceます。バランスの更新は、明示的に行わない限り、bal で自動的に更新することはできません。つまり、変更Form3.balanceしても bal 変数に副作用はありません。

バランス int 値をクラス内にラップし、メソッドまたはプロパティを介して公開できます。

public class BalanceWrapper
{
   public int Balance {get;set;}
}
public static BalanceWrapper balance;  

//-------

BalanceWrapper bal = Form3.balance;
public int Balance()
{
    //MessageBox.Show("Your current balance is: "+bal);
    return bal.Balance;
}

ノート

私のは、何がうまくいかないかについての簡単な説明です。他の人が示唆したように、おそらく設計を再考する必要があります (ここではスレッドの安全性が深刻な問題になる可能性があります)。

于 2013-05-11T15:44:29.527 に答える