我正在尝试更好地理解C#编译器。它坚持认为所有代码路径都必须返回一个值,我认为这很公平。
它还意识到,如果在需要返回值的路径中抛出异常,则在那里返回某些内容是没有意义的。这也说得通。
我的问题是:为什么退出程序的方式不能更优雅一些呢?例如
-示例-
这将编译通过:
它还意识到,如果在需要返回值的路径中抛出异常,则在那里返回某些内容是没有意义的。这也说得通。
我的问题是:为什么退出程序的方式不能更优雅一些呢?例如
Environment.Exit()
?-示例-
这将编译通过:
private string TestMethod(int x, int y)
{
if (x == y)
{
return "this is a string";
}
throw new Exception();
// No point in a return after this, it could never be reached.
}
这段代码无法通过编译:
private string TestMethod(int x, int y)
{
if (x == y)
{
return "this is a string";
}
Environment.Exit(1);
// This will not compile.
// "Not all code paths return a value"
// But, the code would never make it to the return here.
}
return
和Environment.exit()
之间的区别。 - Guy