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# 참조)