switch(C# 참조)

업데이트: 2007년 11월

switch 문은 제어를 본문 내의 case 문 중 하나로 전달하여 다중 선택 및 열거형을 처리하는 제어문입니다. 예를 들면 다음과 같습니다.

예제

int caseSwitch = 1;
switch (caseSwitch)
{
    case 1:
        Console.WriteLine("Case 1");
        break;
    case 2:
        Console.WriteLine("Case 2");
        break;
    default:
        Console.WriteLine("Default case");
        break;
}

제어는 스위치의 값과 일치하는 case 문으로 전달됩니다. switch 문에 포함할 수 있는 case 인스턴스의 수에는 제한이 없지만 두 개의 case 문이 같은 값을 가질 수는 없습니다. 본문은 선택한 문에서 시작하여 break 문이 제어를 case 본문 밖으로 전달할 때까지 계속 실행됩니다. 각 case 블록 뒤에는 break와 같은 점프 문이 와야 합니다. 이는 case 문이든 default 문이든 상관없이 마지막 블록에도 해당됩니다. 한 가지 예외로, C++ switch 문과 달리 C#에서는 제어를 한 case 레이블에서 다른 case 레이블로 암시적으로 이동할 수 없습니다. case 문에 코드가 없는 경우만 여기에서 제외됩니다.

스위치 값과 일치하는 case 식이 없으면 선택적 요소인 default 레이블 다음에 나오는 문으로 제어가 전달됩니다. default 레이블이 없으면 제어가 switch 밖으로 전달됩니다.

    class SwitchTest 
{
    static void Main()
    {
        Console.WriteLine("Coffee sizes: 1=Small 2=Medium 3=Large"); 
        Console.Write("Please enter your selection: "); 
        string s = Console.ReadLine(); 
        int n = int.Parse(s);
        int cost = 0;
        switch(n)
        {
        case 1:
            cost += 25;
            break;
        case 2:
            cost += 25;
            goto case 1;
        case 3:
            cost += 50;
            goto case 1;
        default:
            Console.WriteLine("Invalid selection. Please select 1, 2, or 3.");
            break;
        }
        if (cost != 0)
        {
            Console.WriteLine("Please insert {0} cents.", cost);
        }
        Console.WriteLine("Thank you for your business.");
    }
}
    /*
        Sample Input: 2

        Sample Output:
        Coffee sizes: 1=Small 2=Medium 3=Large
        Please enter your selection: 2
        Please insert 50 cents.
        Thank you for your business.
    */
  • 앞의 예제에서 정수 계열 형식 변수 n이 switch의 case에 사용되었습니다. 하지만 문자열 변수 s를 직접 사용할 수도 있습니다. 이 경우에는 switch의 case를 아래와 같은 형식으로 사용합니다.
switch(s)
{
    case "1":
        // ...
    case "2":
        // ...
}

다음 샘플에서는 빈 case 레이블에 대해 한 case 레이블에서 다른 case 레이블로 제어를 이동할 수 있음을 보여 줍니다.

class SwitchTest2 
{
    static void Main()
    {
        int n = 2;
        switch(n) 
        {
            case 1:
            case 2: 
            case 3: 
                Console.WriteLine("It's 1, 2, or 3.");
                break; 
        default: 
            Console.WriteLine("Not sure what it is.");
            break; 
        }
    }
}
//  Output: It's 1, 2, or 3.

C# 언어 사양

자세한 내용은 C# 언어 사양의 다음 단원을 참조하십시오.

  • 5.3.3.6 Switch 문

  • 8.7.2 switch 문

참고 항목

개념

C# 프로그래밍 가이드

참조

C# 키워드

The switch Statement

if-else(C# 참조)

기타 리소스

C# 참조