switch문

Shy·2025년 3월 12일

C#

목록 보기
13/27

C#의 switch문은 여러 조건을 비교할 때 if - else if보다 가독성이 좋은 선택문이다. 한 번에 여러 경우를 처리할 때 유용하게 사용할 수 있다.


switch문 기본 구조

switch (조건변수)
{
    case1:
        // 조건변수가 값1과 같을 때 실행될 코드
        break;

    case2:
        // 조건변수가 값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를 생략하면?

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를 반드시 추가하는 것이 일반적이다.

switch문에서 goto 사용

특정 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
  • case 2에서 goto case 3;을 만나 case 3으로 바로 이동하여 실행됨.

switch 문에서 when 조건 사용 (C# 7.0+)

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 내부에서 추가적인 조건을 걸 수 있다.

switch 문에서 enum 사용

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+ 패턴 매칭을 활용한 switch 문

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;
}
  • objint이므로 "정수: 42"가 출력된다.
  • switch 문에서 타입을 검사하고 변수를 직접 사용할 수 있다.

정리

  • 여러 경우를 비교할 때 switch 문을 사용하면 가독성이 좋다.
  • case 뒤에는 break를 추가하는 것이 일반적이다! (goto 사용 가능)
  • C# 7.0+에서 when 조건을 활용하면 더 정교한 조건 처리 가능하다.
  • C# 8.0+에서 switch 패턴 매칭을 활용하면 코드가 더 깔끔해진다.
profile
신입사원...

0개의 댓글