静态属性的总和不正确

use*_*923 4 c# static properties

我这个小班看起来像这样:

private static int field1 = - 1;
private static int field2 = field1 + 1;

public static void Sum()
{
    field1 = 10;
    Debug.WriteLine(field2);
}
Run Code Online (Sandbox Code Playgroud)

对Sum()的调用写入'0'.为什么?

Jon*_*eet 12

那些不是属性 - 它们是领域.field2涉及到field1在初始化时-在那之后,他们是完全独立的领域.这并不是field1 + 1每次field2读取或每次field1写入时都重新评估表达式.

如果你 field2依赖于它的价值field1,你应该把它作为一个属性:

// Note: I wouldn't actually call this Field2, of course...
private static int Field2 { get { return field1 + 1; } }
Run Code Online (Sandbox Code Playgroud)