if 문과 마찬가지로 특정 조건에 대한 결과에 따라 다른 문장을 실행하는 조건문
1. if문은 실행 시점에서 조건식 결과에 따라 실행할 문장이 결정되지만, switch ~ case 문은 컴파일(번역) 시점에서 이미 실행할 문장이 결정되므로 실행 속도가 빠르다
2. if 문에 비해 제약 사항이 많으므로 문장 작성에 대한 유연성이 좋지 않다
=> if 문을 switch ~ case 문으로 100% 전환 불가, switch ~ case 문은 if 문으로 100% 전환 가능
[ 문법 구조 ]
- switch 문에 판별할 식을 기술하고, 일치하는 값을 case 문으로 판별
- switch 문에 올 수 있는 식은 결과값이 정수 or 문자열 or Enum 상수여야 한다
- case 문에서 조건식 결과값과 일치하는 값을 찾아서 해당 문장을 수행
=> case 문의 값에 올 수 있는 것은 리터럴(실제 데이터 => 정수형, 문자열형, Enum 형)뿐이다!
=> case 문의 값은 중복될 수 없으며, case 문끼리의 순서는 무관
- 일치하는 case 문을 실행한 후 break 문을 만나면 switch ~ case 문을 빠져나감
=> 단, break 문이 없을 경우 아래쪽 case 문과 default 문 모두 실행
break 문을 만나거나 switch ~ case 문이 종료될 때까지
- case 문에서 일치하는 값이 없을 경우 default 문을 찾아서 문장을 실행(if 문의 else 문과 동일)
=> 단, default 문은 생략될 수 있다.
[ 기본 문법 ]
switch(식) {
case 값1 : // 식의 판별 결과가 값 1 일 때 실행할 문장들(한 문장 또는 여러 문장)
[break;]
case 값2 : // 식의 판별 결과가 값 2 일 때 실행할 문장들(한 문장 또는 여러 문장)
[break;]
case 값n : // 식의 판별 결과가 값 n일 때 실행할 문장들(한 문장 또는 여러 문장)
[break;]
default : // 식의 판별 결과 아무것도 일치하는 것이 없을 때 실행할 문장들(생략 가능)]
[break;]
}
[예제코드]
static void Main(string[] args)
{
int num = 5;
switch (num)
{ // num 값을 판별 대상으로 사용
case 10:
Console.WriteLine("num = 10 이다");
break; // num 값이 10일 때 출력문 실행 후 break 문을 만나므로 switch ~ case 문 종료됨
case 9:
Console.WriteLine("num = 9 이다");
break;
case 8:
Console.WriteLine("num = 8 이다");
break;
case 7:
Console.WriteLine("num = 7 이다");
break;
case 6:
Console.WriteLine("num = 6 이다");
break;
default: // 일치하는 case 문이 없을 경우 default 문의 문장을 실행하게 됨(없을 경우 그냥 종료)
Console.WriteLine("num 은 6 ~ 10 사이가 아닌 숫자");
break;
}
[결과]
'C#' 카테고리의 다른 글
C# 반복문 while문 사용하기(2) (0) | 2020.10.23 |
---|---|
C# 반복문 for문 사용하기(1) (0) | 2020.10.22 |
C# 조건문 if~else문 사용하기(1) (2) | 2020.10.18 |
C#.클래스(Class), 인스턴스(Instance) 란? (0) | 2020.10.10 |
C# 상속 하기란? 부모-자식 클래스 (프로그램 예제) (2) | 2020.10.08 |
댓글