C#의 switch문은 여러 조건을 비교할 때 if - else if보다 가독성이 좋은 선택문이다. 한 번에 여러 경우를 처리할 때 유용하게 사용할 수 있다.
switch (조건변수)
{
case 값1:
// 조건변수가 값1과 같을 때 실행될 코드
break;
case 값2:
// 조건변수가 값2와 같을 때 실행될 코드
break;
default:
// 위의 case들에 해당하지 않을 때 실행될 코드
break;
}
case 끝에는 break 문을 넣어야 함 → 그렇지 않으면 다음 case로 코드가 실행된다.default는 모든 case에 해당하지 않을 때 실행된다 (생략 가능).using System;
class Program
{
static void Main()
{
int day = 3;
switch (day)
{
case 1:
Console.WriteLine("월요일");
break;
case 2:
Console.WriteLine("화요일");
break;
case 3:
Console.WriteLine("수요일");
break;
default:
Console.WriteLine("유효하지 않은 요일");
break;
}
}
}
// day가 3이므로 "수요일"이 출력된다.
// default는 모든 case에 해당하지 않을 때 실행된다.
break 문이 없으면 다음 case도 실행됨 (fall-through).
int num = 2;
switch (num)
{
case 1:
Console.WriteLine("One");
case 2:
Console.WriteLine("Two");
case 3:
Console.WriteLine("Three");
break;
}
case 2에서 break가 없어서 case 3까지 실행된다!case 끝에는 break를 반드시 추가하는 것이 일반적이다.특정 case에서 다른 case로 이동할 때
goto를 사용할 수 있다.
int num = 2;
switch (num)
{
case 1:
Console.WriteLine("One");
break;
case 2:
Console.WriteLine("Two");
goto case 3; // case 3으로 이동
case 3:
Console.WriteLine("Three");
break;
}
// Two
// Three
C# 7.0부터는 case에 조건을 추가할 수 있다.
int number = 5;
switch (number)
{
case int n when (n % 2 == 0):
Console.WriteLine("짝수입니다.");
break;
case int n when (n % 2 != 0):
Console.WriteLine("홀수입니다.");
break;
default:
Console.WriteLine("알 수 없는 숫자");
break;
}
number가 5라서 "홀수입니다."가 출력된다.when을 사용하면 case 내부에서 추가적인 조건을 걸 수 있다.enum값을 비교할 때 switch문을 자주 사용한다.
enum Color { Red, Green, Blue }
class Program
{
static void Main()
{
Color color = Color.Green;
switch (color)
{
case Color.Red:
Console.WriteLine("빨강");
break;
case Color.Green:
Console.WriteLine("초록");
break;
case Color.Blue:
Console.WriteLine("파랑");
break;
}
}
}
Color.Green이므로 "초록"이 출력된다.switch 문은 enum을 다룰 때 가독성이 뛰어나다.C# 8.0부터는 패턴 매칭(Pattern Matching) switch 표현식을 사용할 수 있다.
object obj = 42;
switch (obj)
{
case int i:
Console.WriteLine($"정수: {i}");
break;
case string s:
Console.WriteLine($"문자열: {s}");
break;
default:
Console.WriteLine("알 수 없는 타입");
break;
}
obj가 int이므로 "정수: 42"가 출력된다.switch 문에서 타입을 검사하고 변수를 직접 사용할 수 있다.switch 문을 사용하면 가독성이 좋다.case 뒤에는 break를 추가하는 것이 일반적이다! (goto 사용 가능)when 조건을 활용하면 더 정교한 조건 처리 가능하다.switch 패턴 매칭을 활용하면 코드가 더 깔끔해진다.