소개
C# 8.0부터 패턴식 switch문이 추가되었습니다. 이전의 switch문보다 더욱 간결하고 유연한 코드를 작성할 수 있게 되었습니다. 이번 글에서는 C# 8.0의 패턴식 switch문의 종류와 사용법에 대해 자세하게 살펴보겠습니다.
패턴식 switch문이란?
패턴식 switch문은 switch문의 조건식에 패턴을 사용할 수 있게 해줍니다. 이를 통해 간결하고 유연한 코드를 작성할 수 있습니다. C# 8.0에서는 다양한 종류의 패턴을 사용할 수 있습니다.
상수 패턴
가장 기본적인 패턴은 상수 패턴입니다. 상수 패턴은 switch문의 조건식과 비교할 상수값을 사용합니다.
string fruit = "apple";
switch (fruit)
{
case "apple":
Console.WriteLine("This is an apple.");
break;
case "banana":
Console.WriteLine("This is a banana.");
break;
default:
Console.WriteLine("Unknown fruit.");
break;
}
위의 예제에서는 fruit 변수의 값이 "apple"일 경우 "This is an apple."이 출력됩니다.
타입 패턴
타입 패턴은 switch문의 조건식과 비교할 데이터의 데이터 형식을 지정합니다.
object obj = 3;
switch (obj)
{
case int i:
Console.WriteLine("This is an int.");
break;
case string s:
Console.WriteLine("This is a string.");
break;
default:
Console.WriteLine("Unknown type.");
break;
}
위의 예제에서는 obj 변수의 데이터 형식이 int일 경우 "This is an int."이 출력됩니다.
속성 패턴
속성 패턴은 비교할 객체의 속성 값을 비교하여 판단하는 패턴입니다.
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
var person = new Person { Name = "John", Age = 30 };
switch (person)
{
case { Name: "John" }:
Console.WriteLine("This is John.");
break;
case { Age: 18 }:
Console.WriteLine("This is an 18-year-old.");
break;
default:
Console.WriteLine("Unknown person.");
break;
}
위의 예제에서는 person 객체의 Name 속성 값이 "John"일 경우 "This is John."이 출력됩니다.
튜플 패턴
튜플 패턴은 비교할 객체의 여러 속성 값을 튜플로 묶어 비교하는 패턴입니다.
var tuple = (1, 2);
switch (tuple)
{
case (0, 0):
Console.WriteLine("This is origin.");
break;
case (_, 0):
Console.WriteLine("This is on x-axis.");
break;
case (0, _):
Console.WriteLine("This is on y-axis.");
break;
case var (x, y) when x == y:
Console.WriteLine("This is on diagonal.");
break;
default:
Console.WriteLine("Unknown position.");
break;
}
위의 예제에서는 tuple 객체의 첫 번째 값이 0이고 두 번째 값이 0일 경우 "This is origin."이 출력됩니다.
위치 패턴
위치 패턴은 비교할 값이 특정 위치에 있는지 비교하는 패턴입니다.
var list = new List<int> { 1, 2, 3 };
switch (list)
{
case var l when l.Contains(1) && l.Contains(2):
Console.WriteLine("Contains 1 and 2.");
break;
case var l when l.Contains(2) && l.Contains(3):
Console.WriteLine("Contains 2 and 3.");
break;
default:
Console.WriteLine("Unknown list.");
break;
}
위의 예제에서는 list 객체가 1과 2를 포함할 경우 "Contains 1 and 2."이 출력됩니다.
패턴식 switch문의 장점
패턴식 switch문을 사용하면 조건식과 비교할 데이터의 데이터 형식에 따라 다양한 패턴을 사용할 수 있습니다. 이를 통해 코드의 가독성과 유지 보수성이 향상됩니다.
결론
C# 8.0의 패턴식 switch문은 기존의 switch문보다 더욱 간결하고 유연한 코드를 작성할 수 있게 해줍니다. 상수 패턴, 타입 패턴, 속성 패턴, 튜플 패턴, 위치 패턴 등 다양한 패턴을 사용하여 조건식과 비교할 데이터의 데이터 형식에 따라 다양한 코드를 작성할 수 있습니다. 이번 글을 통해 C# 8.0의 패턴식 switch문에 대해 더욱 자세히 알아보았습니다.
'C#' 카테고리의 다른 글
C# 튜플 자료형 (1) | 2023.06.20 |
---|---|
실수형 변수 decimal, float, double (0) | 2023.06.19 |
C# Boxing (0) | 2023.06.12 |
C# Jump 문 : break, continue, return, goto (0) | 2023.06.10 |
C# 메서드 매개변수 in, ref, out, param (0) | 2023.06.09 |