[C#] 패턴 매칭 (형식, 선언, 상수)

Learning 

When: 1학년 8월 28일

 

How:

최근 4일 정도 동안 계속 꼬리에 꼬리를 무는 모르는 사실이 나와서,(식 본문 멤버를 공부하기 위해 Indexer, 튜플 등을 공부하고 거기서 패턴 매칭이 나옴) 패턴 매칭까지 공부하게 되었습니다. 패턴 매칭은 '이것이 C#이다'라는 책에 있기는 했지만 내용도 어렵고 설명하는 코드도 좀 어렵게 짜여 있었기 때문에 책을 패턴 매칭은 조금 보다가 건너뛰었는데, 내용이 어렵다기보다는 사용하는 코드가 어려워서 시간을 계속 쓰지 않고 건너뛴 것이 다행이라는 생각이 들었습니다.

 

Understanding:

  • 설명 : 패턴 매칭은 원하는 변수와 패턴을 비교하는 것인데, 패턴 매칭은 switch 문, switch 식, is 연산자와 사용할 수 있습니다. switch 문에서는 일치할 때 그 case가 실행되고, switch 식에서는 일치한 case를 반환합니다. 그리고 is 연산자는 일치시키면 true, 일치하지 않으면 false를 반환합니다. 예제 코드에서는 is 연산자만 사용하겠습니다.
  • 형식 패턴 : 선언 패턴은 변수의 형식과 특정 형식을 비교할 수 있게 해주는 패턴입니다.
object a = 10;
if (a is int)
{
    Console.WriteLine("A는 int 자료형입니다.");
}
  • 선언 패턴 : 형식 패턴과 거의 비슷합니다. 하지만 일치한다면 값을 복사한 새로운 지역 변수를 생성합니다. 
object a = 10;
if (a is int b)
{
    Console.WriteLine($"A는 int 자료형입니다. 값 :{b}");
}
  • 상수 패턴 : 상수 패턴은 특정 상수와 값을 비교하는 == 연산자와 똑같이 동작하지만, 패턴 매칭이므로 switch 문에서도 사용할 수 있고 다른 패턴 매칭과 섞어서 쓸 수도 있으므로 == 연산자보다 강력합니다.
object obj = 10;

if (obj is 10)
{
    Console.WriteLine($"obj는 10입니다.");
}

 

Result: '이것이 C#이다'에서 패턴 매칭을 알려줄 때 너무 실전성 있게 코드가 짜여서 그런지 패턴 매칭 자체는 그렇게 어렵지 않은데 이해하기 어려웠기 때문에 이번에는 기능만 알려주는 목적으로 최대한 쉽게 코드를 짜봤는데 각각 장단점이 있는 것 같기는 합니다.

'C#' 카테고리의 다른 글

[C#] 패턴 매칭 (관계, 논리)  (0) 2025.08.29
[C#] 패턴 매칭 (프로퍼티, 괄호)  (0) 2025.08.28
[C#] 얕은 복사(Shallow copy)와 MemberwiseClone() 메서드  (1) 2025.08.26
[C#] object 타입  (0) 2025.08.25
[C#] 튜플  (0) 2025.08.24