본문 바로가기
3.2 .net/C#

[C#] 두개의 Switch (스위치문, 스위치식)

by Dohi._. 2024. 10. 21.
728x90

C#에서 스위치 문(switch statement)과 스위치 식(switch expression)은 

조건에 따라 여러 경로 중 하나를 선택하는 데 사용되는 구조입니다.

 

 두 가지 방식의 차이점과 사용법에 대해 설명해드릴게요.

1. 스위치 문 (Switch Statement)
스위치 문은 여러 조건을 비교하여 해당하는 특정 블록의 코드를 실행합니다. 기본 구문은 다음과 같습니다:
주로 대부분 다른언어에서도 익숙하게 사용하는 코드입니다

switch (변수)
{
    case 값1:
        // 값1에 해당하는 경우 실행할 코드
        break;
    case 값2:
        // 값2에 해당하는 경우 실행할 코드
        break;
    default:
        // 어떤 경우에도 해당하지 않는 경우 실행할 코드
        break;
}


예시

int number = 2;

switch (number)
{
    case 1:
        Console.WriteLine("하나");
        break;
    case 2:
        Console.WriteLine("둘");
        break;
    case 3:
        Console.WriteLine("셋");
        break;
    default:
        Console.WriteLine("다른 숫자");
        break;
}


2. 스위치 식 (Switch Expression) 

 C# 8.0에서 도입된 기능으로 더 간결하고 선언적인 방식으로 조건을 처리합니다. 기본 구문은 다음과 같습니다

(각종 언어에도 추가로 생겼다)

var result = 변수 switch
{
    값1 => 결과1,
    값2 => 결과2,
    _ => default값
};


예시

int number = 2;

string result = number switch
{
    1 => "하나",
    2 => "둘",
    3 => "셋",
    _ => "다른 숫자" //default
};
Console.WriteLine(result); // "둘" 출력




주요 차이점

  • 구문: 스위치 문은 복잡한 로직을 처리에 용이, 스위치 식은 간결하게 코드 작성에 용이
  • 값 반환: 스위치 식은 항상 값을 반환합니다. 반면, 스위치 문은 값 반환이 필요 없는 경우도 사용
  • 패턴 매칭: 스위치 식은 패턴 매칭을 지원하여 더 복잡한 조건을 쉽게 처리

패턴 매칭 예시

object obj = "Hello";

string result = obj switch
{
    string s => $"문자열: {s}",
    int i => $"정수: {i}",
    _ => "알 수 없는 타입"
};

Console.WriteLine(result); // "문자열: Hello" 출력

 

예시 2

object obj = 42;

string result = obj switch
{
    int i when i > 0 => "양수",
    int i when i < 0 => "음수",
    int _ => "제로",
    string s => $"문자열: {s}",
    _ => "기타"
};

Console.WriteLine(result); // 출력: 양수

 

 

 

온라인 컴파일러들이 대부분 최신C#이 아니라 아래에서만 됩니다

- 해당 사이트에서는 한글이 깨집니다.
스위치식 온라인컴파일러


728x90

'3.2 .net > C#' 카테고리의 다른 글

[C#] Linq (Language Integrated Query)  (0) 2024.10.22
[C#] using에 대해서  (0) 2024.10.21
[C#] C#이벤트종류 (제가보려고 정리)  (0) 2024.10.08
[.net /C#] 대리자(delegate)  (0) 2024.09.19
[.net/C#] CallerMemberName  (0) 2024.09.19

댓글