개념공부/자투리 지식

C# Switch 정리

Cadi 2025. 9. 3. 23:37

1. Switch문이란 ? 

 

Switch 는 조건문의 일종으로, 특정 변수의 값에 따라 분기할 때 사용한다. 

여러 개의 if - else if 문을 연속해서 사용하는 것보다 코드를 더 간결하고 효율적으로 만들 수 있다. 

 

char op = '+';
int a = 3, b = 4;

switch (op)
{
    case '+':
        Console.WriteLine(a + b);
        break;
    case '-':
        Console.WriteLine(a - b);
        break;
    case '*':
        Console.WriteLine(a * b);
        break;
    default:
        Console.WriteLine("지원하지 않는 연산자");
        break;
}

 

기본적으로 위와 같이 switch ( 피연산자 : 변수 / 값 / 표현식) 으로 분류를 할 값을 선택한다.

이후 , 각 case  를 값과 매칭시켜 동일하다면 case의 식을 실행시킨다.

break는 실행이 되었다면,  아래로 계속 실행되는 것을 막기 위한 방지턱이다.

Default는 모든 case가 맞지 않을때 실행된다. 

 

2. 다른 표현 방법 ( C# 8.0+)

 

값을 반환시킬 때 사용할 수 있는 간결한 방식이 있다.

int Operate(int a, int b, char op) =>
    op switch
    {
        '+' => a + b,
        '-' => a - b,
        '*' => a * b,
        _   => 0
    };

 

항상 값을 반환시켜야 한다.

 

case를 생략하고, => 의 우측에 반환시킬 값을 위치시킨다.

_는 Default 값이다. 

 

 

여러 값을 한 번에 매칭시킬 수도 있다. 

op switch
{
    '+' or '-' => a + b,   // + 또는 -일 때
    '*'        => a * b,
    _          => 0
};

 

조건부로 값을 매칭시킬 수도 있다. 

int Sign(int x) =>
    x switch
    {
        > 0  => 1,
        0    => 0,
        < 0  => -1
    };

 

int result = (a, b) switch
{
    ( > 0, > 0 ) => 1,   // 둘 다 양수
    ( < 0, < 0 ) => -1,  // 둘 다 음수
    _            => 0
};

 

 

참고 자료 :

https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/statements/selection-statements#the-switch-statement

 

if 및 switch 문 - 실행할 코드 경로 선택 - C# reference

'if' 및 'switch' 문은 C#에서 분기 논리를 제공합니다. 'if, 'else' 및 'switch'를 사용하여 프로그램이 따르는 경로를 선택합니다.

learn.microsoft.com

 

https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/selection-statements

 

if and switch statements - select a code path to execute - C# reference

The `if` and `switch` statements provide branching logic in C#. You use `if, `else` and `switch` to choose the path your program follows.

learn.microsoft.com