C#

C# 패턴 매칭: 속성·목록 패턴 실전 활용과 예제

로기221 2025. 6. 11. 09:22
728x90
반응형

 

C# 패턴 매칭 실전 예제: 속성 패턴과 목록 패턴 활용

C#의 패턴 매칭은 다양한 조건을 간결하게 표현할 수 있게 해줍니다. 이번에는 속성 패턴 목록 패턴을 활용한 실전 예제를 소개합니다.

 

 

1. 속성 패턴으로 객체 상태 판별하기

예를 들어, 사용자의 등급과 포인트에 따라 VIP 여부를 판별하는 코드를 작성할 수 있습니다.

public class User
{
    public string Grade { get; set; }
    public int Points { get; set; }
}

public static bool IsVIP(User user) =>
    user is { Grade: "Gold", Points: >= 10000 } or { Grade: "Platinum" };

 

  • Gold 등급이면서 포인트가 10,000 이상이거나, Platinum 등급이면 VIP로 간주합니다.
  • 속성 패턴과 논리 패턴을 조합해 복잡한 조건을 한 줄로 표현할 수 있습니다

 

2. 목록 패턴과 슬라이스 패턴으로 배열 검사하기

배열이나 리스트의 특정 패턴을 검사할 때 목록 패턴이 유용합니다.

int[] scores = { 100, 90, 80, 70, 60 };

// 첫 두 점수가 90 이상인지 확인
bool topStudents = scores is [>=90, >=90, ..];

// 마지막 두 점수가 60점 이하인지 확인
bool struggling = scores is [.., <=60, <=60];

 

 

  • [>=90, >=90, ..] : 앞의 두 점수가 90 이상이고, 나머지는 어떤 값이든 상관없음을 의미합니다.
  • [.., <=60, <=60] : 마지막 두 점수가 60 이하임을 의미합니다

 

3. 실전 활용: 학생 성적 분류

학생 점수 배열을 받아 우수, 보통, 미달로 분류하는 예제입니다.

public static string ClassifyScores(int[] scores) => scores switch
{
    [>=90, >=90, >=90, ..] => "우수",
    [>=60, >=60, >=60, ..] => "보통",
    _ => "미달"
};

// 사용 예시
int[] studentA = { 95, 92, 91, 80 };
int[] studentB = { 70, 65, 80, 75 };
int[] studentC = { 50, 40, 60, 30 };

Console.WriteLine(ClassifyScores(studentA)); // 우수
Console.WriteLine(ClassifyScores(studentB)); // 보통
Console.WriteLine(ClassifyScores(studentC)); // 미달

 

  • 목록 패턴과 관계형 패턴을 조합해 배열의 앞부분만으로도 분류가 가능합니다

 

요약

  • 속성 패턴은 객체의 여러 속성을 동시에 검사할 때 유용합니다.
  • 목록 패턴 슬라이스 패턴은 배열/리스트의 특정 구간이나 값 조합을 간결하게 검사할 수 있습니다.
  • 패턴 매칭을 활용하면 복잡한 조건문을 한 줄로 표현할 수 있어 코드가 더욱 명확해집니다.



728x90
반응형