C#에서 Switch 문 Fallthrough 이해
C#에서 switch 문을 사용하면 주어진 변수의 값에 따라 프로그램 흐름을 지정할 수 있습니다. 그러나 전통적인 if/else 구성에는 스위치 문처럼 다양한 대소문자를 "처리"하는 기능이 부족합니다.
숫자를 단어 표현으로 변환하려고 시도하는 다음 예를 고려해 보세요.
static string NumberToWords(int number) { string[] numbers = new string[] { "", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; string[] tens = new string[] { "", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" }; string[] teens = new string[] { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; string ans = ""; switch (number.ToString().Length) { case 3: ans += string.Format("{0} hundred and ", numbers[number / 100]); case 2: int t = (number / 10) % 10; if (t == 1) { ans += teens[number % 10]; break; } else if (t > 1) ans += string.Format("{0}-", tens[t]); case 1: int o = number % 10; ans += numbers[o]; break; default: throw new ArgumentException("number"); } return ans; }
이 코드를 컴파일하면 제어가 한 케이스에서 다른 케이스로 넘어갈 수 없다는 오류와 함께 실패합니다. 이 문제는 C#에서 실행 흐름을 제어하기 위해 각 경우마다 switch 문에 명시적인 중단이 필요하다는 사실에서 비롯됩니다.
Fallthrough 달성
switch 문에서 폴스루를 달성하는 경우 세 가지 옵션이 있습니다:
Fallthrough의 예
NumberToWords 함수의 다음 수정 버전은 fallthrough를 달성하기 위해 goto Case 구문을 활용합니다.
static string NumberToWords(int number) { string[] numbers = new string[] { "", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; string[] tens = new string[] { "", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" }; string[] teens = new string[] { "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" }; string ans = ""; switch (number.ToString().Length) { case 3: ans += string.Format("{0} hundred and ", numbers[number / 100]); goto case 2; case 2: int t = (number / 10) % 10; if (t == 1) { ans += teens[number % 10]; break; } else if (t > 1) ans += string.Format("{0}-", tens[t]); goto case 1; case 1: int o = number % 10; ans += numbers[o]; break; default: throw new ArgumentException("number"); } return ans; }
위 내용은 C#의 Switch 문에서 Fallthrough 동작을 어떻게 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!