C# 8.0에서 도입된 switch 표현식(switch expression)은 표현식 컨텍스트에서 switch와 유사한 의미 체계를 제공하는 새로운 문법입니다.
기존의 switch 문은 선택문(selection statement)의 일종으로, 매칭 표현식(match expression)과 패턴 매칭 결과를 기준으로 후보 목록 중 단일 switch 섹션을 선택하여 실행합니다.
하나의 표현식을 세 개 이상의 조건과 비교해야 하는 경우에는 switch 문이 if-else 구문을 대체하는 용도로 자주 사용됩니다.
새로운 방식의 Switch 작성법
switch 표현식은 화살표(=>) 연산자를 사용하여 각 패턴에 대한 결과값을 직접 반환하기 때문에, 기존 switch 문처럼 case, break, return을 반복해서 작성할 필요가 없습니다. 이 덕분에 코드가 훨씬 간결하고 가독성이 높아집니다.
var message = c switch{
Fruits.Red => "The Fruits is red",
Fruits.Green => "The Fruits is green",
Fruits.Blue => "The Fruits is blue"
};예제 1
아래 예제는 기존의 switch 문과 새로운 switch 표현식을 나란히 비교하여 보여줍니다. 두 방식 모두 동일한 결과를 출력하지만, switch 표현식 쪽이 훨씬 적은 코드로 같은 동작을 구현합니다.
class Program{
public enum Fruits { Red, Green, Blue }
public static void Main(){
Fruits c = (Fruits)(new Random()).Next(0, 3);
switch (c){
case Fruits.Red:
Console.WriteLine("The Fruits is red");
break;
case Fruits.Green:
Console.WriteLine("The Fruits is green");
break;
case Fruits.Blue:
Console.WriteLine("The Fruits is blue");
break;
default:
Console.WriteLine("The Fruits is unknown.");
break;
}
var message = c switch{
Fruits.Red => "The Fruits is red",
Fruits.Green => "The Fruits is green",
Fruits.Blue => "The Fruits is blue"
};
System.Console.WriteLine(message);
Console.ReadLine();
}
}출력 결과
The Fruits is green The Fruits is green