switch(C# 참조)

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 밖으로 전달됩니다.

예제

// statements_switch.cs
using System;
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.");
    }
}

입력

2

샘플 출력

Coffee sizes: 1=Small 2=Medium 3=Large
Please enter your selection: 2
Please insert 50 cents.
Thank you for your business.

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

// statements_switch2.cs
using System;
class SwitchTest 
{
    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; 
        }
    }
}

출력

It's 1, 2, or 3.

코드 설명

  • 앞의 예제에서 정수 계열 형식 변수 n이 switch의 case에 사용되었습니다. 하지만 문자열 변수 s를 직접 사용할 수도 있습니다. 이 경우에는 switch의 case를 아래와 같은 형식으로 사용합니다.
        switch(s)
{
    case "1":
        // ...
    case "2":
        // ...
}

C# 언어 사양

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

  • 5.3.3.6 Switch 문

  • 8.7.2 switch 문

참고 항목

참조

C# 키워드
The switch Statement
if-else(C# 참조)

개념

C# 프로그래밍 가이드

기타 리소스

C# 참조