int x;
if (Q())
x = 123;
if (R())
Console.WriteLine(x); // illegal
int x;
if (Q())
x = 123;
if (false)
Console.WriteLine(x); // legal!!
我可以知道为什么第二个是合法的,而前一个是“使用未分配的局部变量”编译时异常?
答案 0 :(得分:2)
这告诉编译器在下面给出的语句中if下的条件永远不会执行,因此未使用的变量的约束不适用于它。
if (false)
Console.WriteLine(x); // legal!!
答案 1 :(得分:1)
因为第二个被编译器从未执行过来消除。
答案 2 :(得分:1)
如果Q()== FALSE且R()== true,则不设置x并尝试使用它。