728x90
6. 객체 비교를 위한 패턴 매칭(Pattern Matching)
패턴 매칭은 이미 아래 글에서 잠깐 살펴보았는데
[.NET/C#] - [C#] 흐름제어, 형변환, 예외처리
예제에서의 경우뿐만 아니라 객체의 Type비교를 위한 경우에도 패턴 매칭을 적용할 수 있습니다.
namespace mylibrary;
public class Car
{
public int displacement
{
get;
set;
}
}
public class Truck
{
}
예제는 Car와 Truck2개의 Class가 있는데 고속도로 통행 요금은 각각의 Type마다 그리고 Car의 경우 displacement의 값에 따라 달라야 한다고 가정하는 경우 패턴 매칭을 통해 해당 가능을 구현하게 되면 다음과 같이 할 수 있을 것입니다.
using mylibrary;
Car sedan = new();
Truck dump = new();
sedan.displacement = 999;
object o = sedan;
int cost = o switch
{
Car { displacement : > 999 } => 2000,
Car { displacement: <= 999 } => 1000,
Truck => 5000,
_ => 3000
};
객체 o가 Car형식인지 Truck형식인지에 따라 그리고 Car형식이라면 가지고 있는 displacement값이 무엇인지에 따라 요금을 결정하고 있습니다. 또한 객체가 Car도 Truck형식도 아니라면 _(언더바)를 통해 기본요금 3000이 결정됩니다.
728x90
'.NET > C#' 카테고리의 다른 글
[C#] 인터페이스(Interface)와 상속(Inheriting) - 1. 메서드(Method)와 이벤트(Event) (0) | 2022.06.24 |
---|---|
[C#] C#과 OOP(Object-Oriented Programming) - 7. 레코드(Record) (0) | 2022.06.24 |
[C#] C#과 OOP(Object-Oriented Programming) - 5. 속성(Property)과 인덱서(Indexer) (0) | 2022.06.24 |
[C#] C#과 OOP(Object-Oriented Programming) - 4. Method (메서드) (0) | 2022.06.24 |
[C#] C#과 OOP(Object-Oriented Programming) - 3. 필드(Field) (0) | 2022.06.24 |