728x90
반응형
패턴 매칭
패턴과 값이 일치하는지 테스트해서 일치한다면 새로운 변수에 대입
<패턴 매칭을 if문으로 표현>
- 코드 : if (shape is Rectangle r)
- 의미 : 만약 shape 변수 값이 Rectangle 클래스와 패턴이 맞는다면 Rectangle 형식의 r 변수에 저장
using System;
namespace PatternMatchingIf
{
class Shape { }
class Rectangle : Shape
{
public string Name { get; set; } = "사각형";
}
class PatternMatchingIf
{
static void Main() => ShowShape(new Rectangle());
static void ShowShape(Shape shape)
{
// [1] if 구문을 사용한 패턴 매칭
if (shape is Rectangle r)
{
Console.WriteLine(r.Name);
}
}
}
}
실행 결과 > 사각형
Main() 메서드가 시작되고 ShowShape() 메서드에 매개변수로 Rectangle 클래스의 인스턴스를 넘김
이를 받는 ShowShape() 메서드의 shape 변수는 그 패턴(성질)이 Shape 클래스와 일치하기에 1의 r 변수에 담겨 사용
ShowShape() 메서드에는 Rectangle 클래스의 인스턴스가 전달될 때만 if문이 실행
<패턴 매칭을 switch문으로 표현>
using System;
namespace PatternMatchingSwitch
{
class Shape { }
class Rectangle : Shape { }
class Circle : Shape { }
class PatternMatchingSwitch
{
static void Main()
{
ShowShape(new Circle()); // 원
ShowShape(new Rectangle()); // 사각형
}
static void ShowShape(Shape shape)
{
switch (shape)
{
case Circle s:
Console.WriteLine("원");
break;
case Rectangle r:
Console.WriteLine("사각형");
break;
}
}
}
}
실행 결과 >
원 : 반지름(10)
직사각형 : 20 x 10
정사각형 : 10 x 10
728x90
반응형
'C# > C# 교과서' 카테고리의 다른 글
[C# 교과서] B. 팁과 트릭 (0) | 2023.02.11 |
---|---|
[C# 교과서] A. 디버거 사용하기 (0) | 2023.02.11 |
[C# 교과서] 61. 함수와 함수형 프로그래밍 소개하기 (0) | 2023.02.11 |
[C# 교과서] 60. 네트워크 프로그래밍 맛보기 (0) | 2023.02.11 |
[C# 교과서] 59. XML과 JSON 맛보기 (0) | 2023.02.11 |