본문 바로가기
Function/C#

C# 다양한 Switch문 사용법 정리

by wawManager 2024. 8. 17.
728x90

 


안녕하세요.

C#의 switch문은 여러 조건을 검사할 때 사용되는 제어 구조입니다. 

특정 변수나 표현식의 값을 여러 경우(case)와 비교하여, 그 값에 해당하는 코드 블록을 실행합니다. 

여러 if-else 문을 대체할 수 있어 코드의 가독성을 높여줍니다.

 

# switch문 기본 구조

switch (표현식)
{
    case 값1:
        // 값1에 해당하는 코드
        break;
    case 값2:
        // 값2에 해당하는 코드
        break;
    // 필요한 만큼 case 추가
    default:
        // 어떤 case에도 해당하지 않을 때 실행되는 코드
        break;
}

- 표현식: switch문에서 평가되는 변수나 표현식입니다.
- case: 표현식의 값이 일치할 수 있는 각 경우를 나타냅니다. 값1, 값2 등으로 표현됩니다.
- break: 각 case가 끝난 후 switch문을 빠져나오기 위해 사용됩니다.
- default: 어떤 case와도 일치하지 않는 경우 실행됩니다. 선택 사항이며, 반드시 포함할 필요는 없습니다.

 


# 예제: 요일을 문자열로 출력하기

using System;

class Program
{
    static void Main()
    {
        int day = 3;
        string dayName;

        switch (day)
        {
            case 1:
                dayName = "Monday";
                break;
            case 2:
                dayName = "Tuesday";
                break;
            case 3:
                dayName = "Wednesday";
                break;
            case 4:
                dayName = "Thursday";
                break;
            case 5:
                dayName = "Friday";
                break;
            case 6:
                dayName = "Saturday";
                break;
            case 7:
                dayName = "Sunday";
                break;
            default:
                dayName = "Invalid day";
                break;
        }

        Console.WriteLine("Day: " + dayName);
    }
}

이 예제에서 day 변수의 값이 3이기 때문에, "Wednesday"가 출력됩니다.

 

# switch문의 특징
1. break문:
   - 각 case 블록의 끝에 break문이 필요합니다. break문이 없으면 다음 case로 계속해서 실행됩니다. 

이를 "fall-through"라고 하는데, C#에서는 명시적으로 허용하지 않습니다. 

즉, 의도적으로 fall-through를 만들 수는 없고, goto를 사용해 비슷한 효과를 낼 수 있습니다.

2. default 케이스:
   - default는 필수가 아니지만, 제공하면 어떤 경우에도 해당하지 않는 상황에서 실행할 코드를 정의할 수 있습니다. default는 모든 case문 후에 위치해야 합니다.

 

# 예제: default 사용

using System;

class Program
{
    static void Main()
    {
        int score = 85;
        string grade;

        switch (score / 10)
        {
            case 10:
            case 9:
                grade = "A";
                break;
            case 8:
                grade = "B";
                break;
            case 7:
                grade = "C";
                break;
            case 6:
                grade = "D";
                break;
            default:
                grade = "F";
                break;
        }

        Console.WriteLine("Grade: " + grade);
    }
}


이 예제에서는 score를 10으로 나눈 값에 따라 학점을 계산합니다. score가 85이므로, score / 10의 결과는 8이고, 따라서 학점은 "B"로 출력됩니다.

# 결론

C#의 switch문은 여러 조건을 깔끔하게 처리할 수 있는 강력한 도구입니다. 많은 경우의 수를 처리할 때 if-else 문보다 코드가 더 읽기 쉽고 유지보수하기 좋습니다. switch문을 잘 활용하면 복잡한 조건 처리를 보다 간결하게 구현할 수 있습니다.

 

 

 

감사합니다.

 

 

 

(chat gpt 참고)

728x90