返回值必须在编译时就能明确有值

C#,一般来说,我们声明一个变量时,同时会为其赋值。

本文要讨论的是一些搞怪的行为,也就是说声明了变量 m 后不赋值,然后看看将它作为函数返回值的情况。

private int Foo()
{
    int m;
    return m;
}

没得说,上面的代码肯定在编译时就报错:使用了未赋值的局部变量“m”。

private int Foo()
{
    int m;
    if (1 < 3)
    {
        m = 1;
    }
    return m;
}

上面的代码是正确的,因为 m = 1 是铁定会被执行的。

private int Foo()
{
    int m;
    if (1 > 3)
    {
        m = 1;
    }
    return m;
}

上面的代码会报错,因为 m = 1 是铁定不会被执行的,还等不到编译,就在编辑时 Visual Studio 就会提示代码有问题。

private int Foo()
{
    int m;
    int x = 1;
    if (x < 3)
    {
        m = 1;
    }
    return m;
}

这段代码也会报错,虽然光看这段代码来说 m = 1 是铁定会被执行,但 x 是变量,所以在编译的时候是通不过的。

你可能感兴趣的