Iva*_*van 5 .net c# if-statement return
public static int Test(int n)
{
if (n < 0) return 1;
if (n == 0) return 2;
if (n > 0) return 3;
}
Run Code Online (Sandbox Code Playgroud)
编译器(Visual Studio 2010,C#4.0)说"并非所有代码路径都返回值".为什么?
Jon*_*eet 10
编译器不会尝试确定这涵盖了所有可能的值n.所有它看到的是,你有三个if语句,它假定有可能为所有他们是假的......在这种情况下你会到达方法末尾,没有返回值.
有关编译器在可达性方面的限制的详细信息,请参阅Eric Lippert的这篇博文.
只是让最终的回报无条件.
编译器没有查看您的条件.即使你是正确的,至少有一个你的if块会运行,你仍然需要重构这样的事情:
if (n < 0)
return 1;
else if (n == 0)
return 2;
else
return 3;
Run Code Online (Sandbox Code Playgroud)