C#属性的评估时间

时间:2009-07-24 23:13:15

标签: c# properties

class Bar
{
  private byte[] dg;

  Bar(byte[] datagram)
  {
    dg = datagram;
  }

  int Foo
  {
    get { return BitConverter.ToInt16(dg, 8); }
  }
}

什么时候评估属性?在访问Foo时?评估所有属性的调试器让我感到害怕。

2 个答案:

答案 0 :(得分:8)

是的,属性只是调用get访问器方法的语法糖。每次读取属性时,该方法都会执行。是的,这包括调试器(这就是为什么如果你的属性gettors有副作用,调试实际上会影响你的程序的工作方式)。

答案 1 :(得分:2)

是的,C#属性只是特殊方法的语法糖,因此在调用时会对它们进行求值,就像任何其他类型的实例方法一样。