프로그래밍/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