在下面的例子中,每次都会设置'foo'?我在网上搜索过,但我找不到能给我答案的地方:
static void Main(string[] args) {
static public bool abc = true;
static public bool foo = (abc = false);
foo = (abc = true);
}
答案 0 :(得分:8)
false
,第二次true
。请记住=
是赋值运算符:它将第二个操作数的值赋给第一个操作数,然后返回该值。例如:
int foo = 1;
int bar = (foo = 2);
此处的第二行将2分配给foo
,然后将2返回给另一个赋值运算符,该运算符将2分配给bar。最后,foo
和bar
的值均为2.
编辑:这就是将分配操作链接起来的原因; e.g。
int foo;
int bar;
foo = bar = 2; // Equivalent to foo = (bar = 2);
答案 1 :(得分:2)
使用==而不是=表示布尔表达式。
答案 2 :(得分:2)
答案 3 :(得分:0)
您的静态变量定义应放在类级别,而不是放在方法内。在这种情况下,初始化器将按照它们在源代码中定义的顺序运行。
这意味着首先将abc设置为true,然后将foo设置为false,因为abc为true。