참고 :이 코드는 좋지 않습니다. 변수 유효은 삭제되어야하며 while 루프는 while (true)을 사용하고 리턴 값이 빠져 나가도록해야합니다. 하지만 컴파일러가 어떻게 작동하는지 배우려고하기 때문에 이것이 가능할 것이라고 생각했습니다.모든 코드 경로가 작동하지 않습니다. 데드 코드
나는 여기에서 매우 흥미로운 처지가있다. 아래 코드는 사용자에게 옵션 목록을 표시하고 사용자가 선택한 옵션을 반환합니다. "모든 코드 경로가 값을 반환하지는 않습니다 (CS0161)"와 함께 실패합니다. 나는 반환 -1 행의 주석을 해제하면 같은 시간에 죽은 코드를 생성하는 동안
public static int Menu(params string[] list) {
string input;
bool valid = false;
while (!valid) {
for(int i = 0; i < list.Length; i++) {
Console.WriteLine(i + ": " + list[i]);
}
input = Console.ReadLine();
for (int i = 0; i < list.Length; i++) {
if (input == i.ToString()) {
valid = true;
return i;
}
}
}
//return -1;
}
그러나, 코드가 적절하게 작동합니다; while 루프는 동시에 값을 반환 할 때만 종료 할 수 있으며 항상 반환됩니다. (도달 할 수없는 코드라는 경고가 생성되지 않습니다.)
실제로 코드가 실패 할 때 실제로 값을 반환하지 않는다고 말하는 이유는 무엇입니까?
특히,'valid'가'const'로 선언되고 이후 할당이 제거되면 컴파일러는 도달 할 수없는 것으로 인식합니다. – Davy8