사용자 입력을 검사하는 메서드를 개발하려고합니다. 만 유효성 검사를 통과하면 입력을 반환합니다.반환 오류 : 모든 코드 경로가 값을 반환하지 않습니다.
이가 내가하고 싶은 것입니다 :
- 사용자가 입력을
- 입력 로직을 만족하는 경우 입력
의 - 확인 값을 입력 한 후 그 값을 반환, 또 다시 함수를 호출합니다.
이 내가 원하는 걸 정말이지만, 컴파일러는 not all code paths return a value
한다고 :
public static int UserInput(){
int input = int.Parse(Console.ReadLine());
if (input < 1 || input > 4){
Console.Write("Invalid Selection. Enter a valid Number (1,2,3 or 4): ");
if (input < 1 || input > 4) UserInput();
} else{
return input;
}
}
그러나, 이것은 컴파일러를 만족 다음과 같은 코드입니다.
public static int UserInput()
{
int input = int.Parse(Console.ReadLine());
if (input < 1 || input > 4)
{
Console.Write("Invalid Selection. Enter a valid Number (1,2,3 or 4): ");
if (input < 1 || input > 4)
{
UserInput();
return -1; // Never reached, but must be put in to satisfy syntax of C#
}
return input; // Never reached, but must be put in to satisfy syntax of C#
}
else
{
return input;
}
}
이런 종류의 작동하지만 이상한 결과가 나타납니다. 사용자가 첫 번째로 1,2,3 또는 4 중 하나 인 input
에 입력 한 경우 (예 : if
문이 false
으로 계산 됨) 사용자가 입력 한 내용이 반환됩니다.
- 리턴 입력; 사용자가 없습니다 1,2,3 또는 4 다음 유효한 숫자를 입력이었다 값을 입력하는 것이었다 경우, 다음 프로그램은 다음을 수행 할 것
- 자식 if 문으로 건너 뛰고 UserInput()을 실행하십시오.
- -1을 반환합니다.
많은 점이 인정되어 함수를 반환 할 수 있는지 알 수 없습니다. – dgamma3
@ dgamma3 예, 다음과 같은 작업을 수행하는 잘린 방법입니다. int returnValue = UserInput(); return returnValue; ..... 이것은 본질적으로 그것이하는 일입니다. 함수에서 반환 된 값을 반환하는 것만큼이나 함수를 반환하지 않습니다. –