Switch 문
switch 문은 하나의 변수를 여러 값과 비교할 때 유용하다.
if ~ else if ~ else 문과 비슷하지만, switch 문을 사용하면 코드가 훨씬 더 간결해진다.
- 하나의 변수 ( 또는 표현식 ) 의 값을 여러 경우 ( case ) 와 비교해서 실행하는 조건문
- if 문은 조건식이 참 / 거짓 을 따지는 반면
- switch 문은 "값이 어떤 case 에 해당하는가" 에 집중한다
사용 방법
switch ( 판단하고자 하는 변수 )
{
case: ( 첫번째와 조건이 같다면 )
이 내용 실행
break; ( case 의 끝 )
case: ( 두번째와 조건이 같다면 )
이 내용 실행
break ( case 의 끝 )
default: ( 위의 조건중 어느것도 아니라면, 마치 else 문과 비슷함 )
이 내용 실행
break;
}
중요한 점
- break;
↳ 해당 case 실행 후 switch 문을 빠져나가게 한다.
↳ 옆으면 밑으로 계속 실행됨 → fall through - default:
↳ else 와 같은 역할
↳ 어떤 case 와도 조건이 맞지 않을 때 실행된다.
예시 1
int day = 2;
switch (day)
{
case 1:
Console.WriteLine("불타는 금요일");
break;
case 2:
Console.WriteLine("황금같은 토요일");
break;
case 3:
Console.WriteLine("내일이 걱정되는 일요일");
break;
default:
Console.WriteLine("지옥같은 월~목요일");
break;
}
출력
황금같은 토요일
예시 2 ( 여러 case 묶기 )
char grade = 'B';
switch (grade)
{
case 'A':
case 'B':
Console.WriteLine("우수한 성적입니다.");
break;
case 'C':
Console.WriteLine("보통 성적입니다.");
break;
default:
Console.WriteLine("재시험이 필요합니다.");
break;
}
- 'A' 이거나 'B' 일 때 같은 코드 실행
switch 문에서 default 활용
default는 case들 중 어떠한 값과도 일치하지 않을 경우 실행.
생략할 수도 있지만, 일반적으로 모든 가능성을 처리하기 위해 추가하는 것이 좋다.
int number = 5;
switch ( number )
{
case 1:
Console.WriteLine( "숫자는 1입니다." );
break;
case 2:
Console.WriteLine( "숫자는 2입니다." );
break;
case 3:
Console.WriteLine( "숫자는 3입니다." );
break;
default:
Console.WriteLine( "1, 2, 3이 아닌 다른 숫자입니다." );
break;
}
실행 결과 출력
1, 2, 3이 아닌 다른 숫자입니다.
- number 값이 1, 2, 3 에 해당되지 않아 default 블록이 실행
switch 문 vs if 문
| 비교 항목 | switch 문 | if 문 |
|---|---|---|
| 조건의 개수 | 하나의 변수 값에 대한 다중 비교 | 여러 개의 복잡한 조건 가능 |
| 가독성 | 특정 값에 대한 비교가 많을 때 깔끔함 | 간단한 조건에는 사용하기 좋다 |
| 성능 | if 문보다 최적화되어 더 빠를수 있음 | 비교적 유연하지만 복잡한 경우 느려짐 |
| 데이터 타입 | 정수, 문자, 열거형 값 비교에 적합 | 논리 연산, 범위 비교 가능 |
정리
- switch문 → 값이 특정 case와 일치하는지 검사 ( 딱 떨어지는 값 비교 )
- break 필수 ( 안 쓰면 밑으로 계속 내려감 )
- default는 else와 같은 역할
- switch 에 있는 case 중 아무 것도 맞지 않을 때 default 실행
- default 는 없어도 되지만, 보통 예외 처리용도로 넣어두는 것이 안전하다.
참고자료
제어문
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/statements/selection-statements