“并非所有代码路径都返回值”错误发生在方法中,但我确实使用了一些 if 语句来涵盖所有场景

Iva*_*ang 1 c# if-statement compiler-errors return

这可能是一个愚蠢的问题,但我只是想有人可以给出更好的解释。

我有一个方法定义如下:

    private int Test(int i)
    {
        if (i < 0) return -1;
        if (i == 0) return 0;
        if (i > 0) return 1;

        //return 0;        
    }
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误“并非所有代码路径都返回一个值”。

我以为我有 3 if statement,它可以涵盖所有场景(i<0,i==0,i>0)。所以它不应该向我显示这个错误。

Jas*_*ent 5

编译器没有那么聪明。此外,您的代码效率稍低,因为它测试确定性(i在最后一种情况下必须大于零)。

写成:

private int Test(int i)
{
    if (i < 0) return -1;
    else if (i == 0) return 0;
    else return 1;
}
Run Code Online (Sandbox Code Playgroud)