Ваш вопрос на самом деле является одним из самых глубоких и интересных вопросов в области компьютерных наук. Эта проблема известна как проблема остановки: проблема, для данной программы, определить, всегда ли она возвращается или работает всегда.
Проблема остановки известна тем, что она доказуемо не разрешима компьютерами . Не существует алгоритма, который мог бы надежно сказать вам, останавливается ли данная программа. Вы можете доказать, что такая программа либо (1) дает неправильные ответы, (2) не может анализировать все программы, либо (3) сама иногда никогда не останавливается.
Поэтому компилятор C # не пытается решить проблему остановки. Скорее, мы просто обнаруживаем, что «while (true)» и отсутствие разрывов означают, что цикл никогда не остается «вне дна», и, следовательно, конечная точка метода недоступна. Ошибка «не все пути кода возвращают значение» на самом деле означает : «существует путь кода, который выходит из метода, но не возвращает значение». не означает, что «существует кодовый путь, который выполняется вечно», потому что для его решения необходимо решить проблему остановки.