본문 바로가기
C#

C# 조건문 switch ~ case 문 사용하기(2)

by 고체물리학 2020. 10. 21.

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;
            }

[결과]

반응형

댓글