Я пытаюсь лучше понять компилятор для C #. Он настаивает на том, что все пути кода должны возвращать значение, и я думаю, что это довольно справедливо.
Он также признает, что если в пути, где необходимо вернуть значение, возникает исключение, то нет смысла что-либо возвращать туда. Это также имеет смысл.
Мой вопрос: почему это не относится к более изящному выходу из программы? например, Environment.Exit()
-Examples-
Это скомпилирует:
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.
}