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)