Пример кода:
switch(something)
{
case 0:
System.Environment.Exit(0);
case 1:
// blah ...
break;
}
Он не будет компилироваться, потому что компилятор считает, что выполнение может вернуться из Exit(). Компилятор явно ошибается.
Никаких трюков. System.Environment.Exit()
настоящий.
Мало того, что возвращение System.Environment.Exit()
совершенно нелогично, я проследил код, и в итоге он вызывает ExitProcess(exitCode);
, который не может вернуться.
[System.Runtime.InteropServices.Out]
. Это не совсем специальное назначение; любой метод, гарантированно вызывающий исключение, может быть помечен этим тегом; также обратите внимание, что он есть в C и C++. Если вызвать библиотеку времени выполнения, в которой ее нет, код даже не загрузится, так что это небольшая проблема. - person Joshua   schedule 01.09.2017