Learning
When: 1학년 8월 29일
How:
패턴 매칭에 대해 마지막으로 정리한 글입니다. 실전성보단 이해하기 쉬운 코드를 사용했습니다.
Understanding:
- 관계 패턴 : 관계 패턴은 >, >=, <=, < 이렇게 관계 연산자를 사용하여 식을 비교합니다. if 문에서 사용하면 그냥 관계 연산자를 사용하는 것이 좋을 수도 있지만, switch 식이나 문에서 사용하기 매우 편합니다. 그리고 if 문에서 복잡한 조건이 있을 때, 패턴 매칭을 사용하면 다른 패턴 매칭과 같이 사용하여 구현할 수 있습니다. 아래의 코드는 스위치 문을 사용한 관계 패턴 코드입니다.
switch (int.Parse(Console.ReadLine()))
{
case >= 3:
Console.WriteLine("3 이상");
break;
}
- 논리 패턴 : and, or, not 연산자를 활용하여 패턴을 만들 수 있는데, 원래 같은 변수에 조건을 2개 쓰려면 &&나 || 같은 논리 연산자를 활용하여 논리식을 2개 써야 했지만, 하나의 논리식으로도 조건 2개를 비교하는 것이 가능해졌습니다. 그리고 쓰면서 놀란 점이 있는데 무려 무조건 false가 되는 조건식은 컴파일 에러가 난다는 사실입니다.
int a = int.Parse(Console.ReadLine());
//if (a is 1 and not 1) // 컴파일 오류
//{
// Console.WriteLine("a는 1이고 1이 아니다.");
//}
if (a is > 10 and < 20)
{
Console.WriteLine("a는 10보다 크고 20보다 작다.");
}
Result: 그나마 신기술이라 그런지 조건식에서 컴파일 에러를 일으켜 주는 것은 상상도 못 했는데 정말 편하고 좋은 기능인 것 같습니다.
'C#' 카테고리의 다른 글
| [C#] 패턴 매칭 (var, 무시) (1) | 2025.08.31 |
|---|---|
| [C#] 패턴 매칭 (위치) (0) | 2025.08.30 |
| [C#] 패턴 매칭 (프로퍼티, 괄호) (0) | 2025.08.28 |
| [C#] 패턴 매칭 (형식, 선언, 상수) (1) | 2025.08.28 |
| [C#] 얕은 복사(Shallow copy)와 MemberwiseClone() 메서드 (1) | 2025.08.26 |