본문 바로가기
.Net

C#7.0 - switch에 유연한 패턴 일치 사용

by 올엠 2020. 12. 10.
반응형

switch는 용어와 맞게 중복되지 않는 조건, 즉 유일 조건을 비교하는 용도로 사용한다.

그런데 만약 문자열의 특정 조건으로 switch를 사용하고 싶다면 어떨까?

C#7.0(.NET core 3.1) 에서는 문자열 검색 조건을 switch에서 사용할 수 있다.

방법은 when 키워드를 이용해서 조건의 추가가 가능하다.

사용 방법은 다음과 같다.

            string mesg = "allmnettest";

            switch(mesg)
            {
                case string b when b.StartsWith("test"):
                    Console.WriteLine("case2");
                    break;
                case string a when a.StartsWith("test"):
                    Console.WriteLine("case1");
                    break;
                default:
                    break;
            }

만약 기존 switch라면 동일한 일치 조건은 사용할 수 없다. 하지만 위와 같은 코드로 구성이 된다면, 먼저 일치하는 코드에서 처리되고 이후 코드는 무시하는 구조이다. if에 else if 같은 구조라 할 수 있다.

            if(mesg.Contains("test"))
            {

            }
            else if(mesg.Contains("test"))
            {

            }

switch문의 특징인 유일한 일치 조건이 없어지는 부분이 아쉽기는 하지만, 보다 유연하게 코드를 구현할 수 있는 장점이 있는 것 환호 할 만하다. 필자 역시 이 기능을 찾게 된 이유가 일치 조건으로 switch문을 사용하기에 제약이 있어서 string 비교 문이 필요하던 차에 본 기능을 통해 쉽게 코딩을 마무리 할 수 있었다.

아래 글을 읽으면 이해에 보다 도움이 될 것이다.

패턴 일치 - C# 가이드 | Microsoft Docs

 

패턴 일치 - C# 가이드

C#의 패턴 일치 식에 대한 자세한 정보

docs.microsoft.com

youtu.be/yxha6ViRFwg

 

반응형