Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 중첩된 switch 문 사용 방법 완벽 가이드

C#에서는 하나의 switch 문 안에 또 다른 switch 문을 넣어 사용할 수 있습니다. 이를 중첩 switch(nested switch)라고 부르며, 외부(outer) switch의 case 문 시퀀스 내부에 내부(inner) switch를 배치하는 형태로 작성합니다.

흥미로운 점은 외부 switch와 내부 switch의 case 상수 값이 서로 같더라도 충돌이 발생하지 않는다는 것입니다. 컴파일러가 각 switch 블록을 독립적으로 처리하기 때문입니다.

중첩 switch 문 기본 문법

중첩 switch 문의 기본적인 문법 구조는 다음과 같습니다.

switch(ch1) {
    case 'A':
    Console.WriteLine("This A is part of outer switch");
    switch(ch2) {
        case 'A':
        Console.WriteLine("This A is part of inner switch");
        break;
        case 'B': /* 내부 B case 코드 */
    }
    break;
    case 'B': /* 외부 B case 코드 */
}

중첩 switch 문 예제

아래는 C#에서 중첩 switch 문을 실제로 사용한 예제입니다. 먼저 간단한 형태부터 살펴보겠습니다.

switch (a) {
    case 100:
    Console.WriteLine("This is part of outer switch ");
    switch (b) {
        case 200:
        Console.WriteLine("This is part of inner switch ");
        break;
    }
    break;
}

이제 전체 코드를 포함한 완성된 예제를 확인해 보겠습니다.

전체 예제 코드

using System;
namespace Demo {
    class Program {
        static void Main(string[] args) {
            int a = 100;
            int b = 200;
            switch (a) {
                case 100:
                Console.WriteLine("This is part of outer switch ");
                switch (b) {
                    case 200:
                    Console.WriteLine("This is part of inner switch ");
                    break;
                }
                break;
            }
            Console.WriteLine("Exact value of a is : {0}", a);
            Console.WriteLine("Exact value of b is : {0}", b);
            Console.ReadLine();
        }
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

This is part of outer switch
This is part of inner switch
Exact value of a is : 100
Exact value of b is : 200

정리 및 활용 팁

변수 a의 값이 100이므로 외부 switch의 첫 번째 case가 실행되고, 이어서 변수 b를 평가하는 내부 switch가 동작하여 두 번째 메시지가 출력됩니다. 이처럼 중첩 switch는 여러 조건을 계층적으로 검사해야 할 때 유용하게 활용할 수 있습니다.

다만 중첩이 깊어질수록 코드 가독성이 떨어질 수 있으므로, 가능하다면 논리 연산자(&&, ||)를 활용한 조건문이나 C# 8.0 이상에서 지원되는 switch 식(switch expression)과 패턴 매칭을 대안으로 고려하는 것이 좋습니다.