0

我有三个变量,int即和。我希望它始终是 和 的总和。如果我更改or的值,那么 的值应该会自动更新。如何做到这一点?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 的 lambda 几乎可以工作- 您不能以这种方式拥有本地属性,因此必须使用 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 回答