0

、およびという3 つのint変数があります。常にとの合計になるようにしたい。またはの値を変更すると、 の値が自動的に更新されます。これを達成する方法は?a1a2a3a1a2a3a2a3a1

4

4 に答える 4

4

@Randolfの権利、代わりにそれらをクラスに入れ、a1を自動的に計算することを検討しましたか、つまり

public class IntHolder()
{
  public int a2 {get; set;}
  public int a3 {get; set;}
  public int a1
  {
   get
   {
     return a2+a3;
    }
  }

}
于 2012-09-18T15:12:03.520 に答える
3

手動で更新する必要があります。intプリミティブ型であるため、参照ではなく値を直接保持します。したがって、a2 または a3 のいずれかが変更されるたびに、両方を合計してその値を a1 に割り当てるメソッドを実装します。または、常に値を計算する読み取り専用プロパティを a1 に設定します。ただし、最初のケースの場合:

private int m_a2;
public int A2
{
    get { return m_a2; }
    set
    {
        m_a2 = value;
        CalculateSumAgain();
    }
}
于 2012-09-18T15:08:51.497 に答える
2

a1 を次のようなプロパティにします。

public int a1
{
   get
   {
      return a2 + a3;
   }
}

public int a2;
public int a3;
于 2012-09-18T15:11:53.147 に答える
0

そして、それを関数に対してローカルにしたい場合-a1のラムダはほとんど機能します-このようにローカルプロパティを持つことはできないため、次のようなa1のメソッド呼び出し構文を使用する必要がありますa1():

void foo()
{
  int a2 = 3;
  int a3 = 4;
  Func<int> a1 = ()=> a2 + a3;
  Console.WriteLine(a1()); // 3+4 = 7
  a2 = 5;
  Console.WriteLine(a1()); // 5+4 = 9
}
于 2012-09-18T16:01:33.703 に答える