본문 바로가기
CSharp/CShap Tip

pattern matching으로 조건문을 더 간결하고 직관적으로 표현하기

by MonoSoft 2025. 11. 12.
728x90
반응형

pattern matching으로 조건문을 더 간결하고 직관적으로 표현하기

 

C#의 Pattern Matching(패턴 매칭) 은 is, switch, when 구문을 활용하여 
값과 타입을 동시에 비교하는 기능입니다.

기존의 다중 if-else 문을 대체해 코드 가독성과 유지보수성을 높이며, 
타입 검사와 조건 검사를 하나로 통합할 수 있습니다.

C# 9 이후에는 논리 패턴, 관계 패턴, 조합 패턴까지 지원되어 
훨씬 강력해졌습니다.

string GetAccessLevel(object user) => user switch
{
    Admin a when a.Level > 5 => "최고 관리자",
    Admin => "일반 관리자",
    Guest => "게스트 사용자",
    null => "로그인 필요",
    _ => "일반 사용자"
};

패턴이 누락되면 런타임 예외가 발생할 수 있으므로 
_(default) 패턴은 항상 추가하는 것이 좋습니다.

복잡한 조건 로직을 모두 switch로 옮기면 오히려 
가독성이 떨어질 수 있습니다.

.NET Framework 4.x에서는 C# 7까지의 기본 패턴만 지원되므로, 
최신 문법은 .NET 5 이상 환경에서만 동작합니다.


사용자 권한/역할 분기, API 응답 코드 처리, 
UI 상태 전환 등 다중 조건 로직에 최적.

형태 기반 처리(Shape-based) 로 객체 타입별 
분기 처리 시 깔끔한 구조 유지.

보안/로깅 시 특정 타입이나 속성 조합별 예외 처리 로직에 활용 가능.

논리 패턴 (and/or/not)
bool IsValid(int age) => age is >= 18 and < 65;

튜플 패턴 (복합 조건)
string GetWeather((bool isRainy, bool isCold) w) => w switch
{
    (true, true) => "춥고 비 오는 날",
    (true, false) => "따뜻한 비",
    (false, true) => "쌀쌀하지만 맑음",
    _ => "좋은 날씨"
};

관계 패턴 (<, >, <=, >=) 로 숫자 조건도 명확하게 표현 가능.

 


#CSharp #패턴매칭 #switch표현식 #is패턴 #when조건 #dotnet #조건분기 
#가독성향상 #CSharp9 #논리패턴

728x90
반응형

댓글