Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
int x; if (Q()) x = 123; if (R()) Console.WriteLine(x); // illegal int x; if (Q()) x = 123; if (false) Console.WriteLine(x); // legal!!
我可以知道为什么第二个是合法的,而前一个是抛出“使用未分配的局部变量”编译时异常吗?
这告诉编译器下面给出的语句中的 if 条件将永远不会执行,因此未使用变量的约束不适用于它。
if (false) Console.WriteLine(x); // legal!!
因为第二个被编译器消除为从未执行过。
如果 Q() == FALSE 且 R() == true,则 x 未设置,它将尝试使用它。