未分配的局部变量之谜

时间:2012-06-17 13:36:10

标签: c# clr

    int x;
    if (Q())
        x = 123;
    if (R())
        Console.WriteLine(x); // illegal

    int x;
    if (Q())
        x = 123;
    if (false)
        Console.WriteLine(x); // legal!!

我可以知道为什么第二个是合法的,而前一个是“使用未分配的局部变量”编译时异常?

3 个答案:

答案 0 :(得分:2)

这告诉编译器在下面给出的语句中if下的条件永远不会执行,因此未使用的变量的约束不适用于它。

if (false)
        Console.WriteLine(x); // legal!!

答案 1 :(得分:1)

因为第二个被编译器从未执行过来消除。

答案 2 :(得分:1)

如果Q()== FALSE且R()== true,则不设置x并尝试使用它。