>백엔드 개발 >C++ >C# Switch 문이 실패할 수 있나요? 그렇다면 어떻게 해야 할까요?

C# Switch 문이 실패할 수 있나요? 그렇다면 어떻게 해야 할까요?

Linda Hamilton
Linda Hamilton원래의
2025-01-03 14:26:46877검색

Can C# Switch Statements Fall Through, and If So, How?

C#의 Switch 문 대체

switch 문은 지정된 변수의 값에 따라 다른 코드를 실행하는 방법을 제공합니다. switch 문은 if/else if 구문에 비해 몇 가지 장점을 제공하지만 한 사례에서 다른 사례로 넘어갈 수 없다는 제한 사항 중 하나가 있습니다.

C#에서 컴파일러는 "폴스루 없음" 규칙을 적용합니다. 이는 케이스에 도달하면 실행이 다음 케이스의 시작으로 점프해야 함을 의미합니다. 이 동작은 코드 명확성을 보장하고 의도하지 않은 여러 사례 실행을 방지합니다.

switch 문을 사용하여 숫자를 단어 표현으로 변환하려고 시도하는 다음 예를 고려하십시오.

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");
}

이 코드를 실행하면 컴파일러는 "컨트롤이 하나의 케이스 레이블('case 3:')에서 다른 케이스 레이블로 넘어갈 수 없습니다" 및 "컨트롤이 하나의 케이스 레이블('case 3:')에서 넘어갈 수 없음을 나타내는 오류를 생성합니다. 2:')를 다른 것으로 지정합니다."

C#에서 폴스루 동작을 달성하려면 다음 기술을 사용할 수 있습니다.

  1. 빈 케이스: fallthrough를 강제하기 위한 빈 케이스. 예를 들어, 위의 예에서 케이스 0:은 빈 케이스로 대체될 수 있습니다.
  2. Goto 케이스: goto 케이스 구문은 명시적인 fallthrough를 허용합니다. 예를 들어, goto 사례 2를 사용할 수 있습니다. 사례 1의 끝: 사례 2: 주어진 예에서.
  3. Goto Default: 마찬가지로, goto default; 기본 사례로 폴스루하는 데 사용할 수 있습니다.

폴스루는 불분명하고 오류가 발생하기 쉬운 코드를 생성할 가능성이 있으므로 권장되지 않는다는 점에 유의하는 것이 중요합니다. 여러 조건을 확인해야 하는 경우 일반적으로 if/else 또는 기타 조건 구문을 사용하는 것이 더 좋습니다.

위 내용은 C# Switch 문이 실패할 수 있나요? 그렇다면 어떻게 해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.