自动更新变量

时间:2012-09-18 15:07:59

标签: c# reference

我有三个int个变量,a1a2a3。我希望a1使其始终为a2a3的总和。如果我更改a2a3的值,则a1的值应自动更新。怎么做到这一点?

3 个答案:

答案 0 :(得分:3)

您需要手动更新。由于intprimitive type,因此它直接保存值而不是对它的引用。因此,实现一种方法,无论何时a2或a3发生变化,它都将两者相加并将其值赋给a1。或者只设置a1一个始终计算该值的只读属性。但是,对于第一种情况:

private int m_a2;
public int A2
{
    get { return m_a2; }
    set
    {
        m_a2 = value;
        CalculateSumAgain();
    }
}

答案 1 :(得分:2)

使a1属性如:

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

public int a2;
public int a3;

答案 2 :(得分:0)

如果你希望它是本地的函数 - lambda for 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
}