프로그래밍/C#

C# 8.0의 달라진 Switch문

CtrlVGames 2021. 12. 28. 00:09

Unity 버전이 2021로 버전업이 되면서

Unity C#에 대한 언어 버전이 C# 8.0으로 업데이트 되었다.

이번 C# 8.0에서 많은 새로운 기능이 추가되었지만

이번에 다룰 내용은 Switch문의 개선이다

패턴 일치 개선 사항:

우리가 기존에 알고 익숙하게 사용 하던 Switch 문의 사용 방식

switch (type)
{

    case ItemType.SWORD:
        {
            name = "SWORD";
            break;
        }
    case ItemType.SHIELD:
        {
            name = "SHIELD";
            break;
        }
    case ItemType.ARMOR:
        {
            name = "ARMOR";
            break;
        }
    case ItemType.NONE:
    default:
        {
            break;
        }
}

너무나 익숙하게 사용하던 방식이

아래의 방법처럼 사용할 수 있게 개선되었다.

name = type switch
{
    ItemType.SWORD => "SWORD",
    ItemType.SHIELD => "SHIELD",
    ItemType.ARMOR => "ARMOR",
    _ => ""
};

위와 같이 case, break 키워드, 중괄호를 반복적으로 사용하는 것을 생략하고 간결하게 사용할 수 있는 방법이 지원된다.

default: 문의 경우 _ 키워드로 대체된다.

또한

public static string GetStringByWords(string first, string second)
=> (first, second) switch
{
    ("1", "2") => "1과 2는 첫번째",
    ("2", "3") => "2와 3은 두번째",
    (_, _) => "Default"
};

Tuple식으로도 Switch문 활용이 가능하다.

 

대괄호를 통한 로직 정리가 필요한 기능의 경우 아직은 일반적으로 사용하던 switch문

switch (type)
{
 case:
 default:
  break;
}

의 형식을 사용해야 하지만

간단하게 값을 반환하는 Switch문 형식의 함수타입에는 C# 8.0의 새로운 Switch문의 기능을 활용하면

코드의 간결함을 더욱 표현 할 수 있을것으로 보인다.

 

 

 

새롭게 달라진 C# 8.0의 기능
https://docs.microsoft.com/ko-kr/dotnet/csharp/whats-new/csharp-8#switch-expressions

 

C# 8.0의 새로운 기능 - C# 가이드

C# 8.0의 새로운 기능을 살펴봅니다.

docs.microsoft.com