C# 패턴식 switch문

2023. 6. 15. 12:24·C#
반응형

소개

C# 8.0부터 패턴식 switch문이 추가되었습니다. 이전의 switch문보다 더욱 간결하고 유연한 코드를 작성할 수 있게 되었습니다. 이번 글에서는 C# 8.0의 패턴식 switch문의 종류와 사용법에 대해 자세하게 살펴보겠습니다.

패턴식 switch문이란?

패턴식 switch문은 switch문의 조건식에 패턴을 사용할 수 있게 해줍니다. 이를 통해 간결하고 유연한 코드를 작성할 수 있습니다. C# 8.0에서는 다양한 종류의 패턴을 사용할 수 있습니다.

상수 패턴

가장 기본적인 패턴은 상수 패턴입니다. 상수 패턴은 switch문의 조건식과 비교할 상수값을 사용합니다.

string fruit = "apple";

switch (fruit)
{
    case "apple":
        Console.WriteLine("This is an apple.");
        break;
    case "banana":
        Console.WriteLine("This is a banana.");
        break;
    default:
        Console.WriteLine("Unknown fruit.");
        break;
}

위의 예제에서는 fruit 변수의 값이 "apple"일 경우 "This is an apple."이 출력됩니다.

타입 패턴

타입 패턴은 switch문의 조건식과 비교할 데이터의 데이터 형식을 지정합니다.

object obj = 3;

switch (obj)
{
    case int i:
        Console.WriteLine("This is an int.");
        break;
    case string s:
        Console.WriteLine("This is a string.");
        break;
    default:
        Console.WriteLine("Unknown type.");
        break;
}

위의 예제에서는 obj 변수의 데이터 형식이 int일 경우 "This is an int."이 출력됩니다.

속성 패턴

속성 패턴은 비교할 객체의 속성 값을 비교하여 판단하는 패턴입니다.

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

var person = new Person { Name = "John", Age = 30 };

switch (person)
{
    case { Name: "John" }:
        Console.WriteLine("This is John.");
        break;
    case { Age: 18 }:
        Console.WriteLine("This is an 18-year-old.");
        break;
    default:
        Console.WriteLine("Unknown person.");
        break;
}

위의 예제에서는 person 객체의 Name 속성 값이 "John"일 경우 "This is John."이 출력됩니다.

튜플 패턴

튜플 패턴은 비교할 객체의 여러 속성 값을 튜플로 묶어 비교하는 패턴입니다.

var tuple = (1, 2);

switch (tuple)
{
    case (0, 0):
        Console.WriteLine("This is origin.");
        break;
    case (_, 0):
        Console.WriteLine("This is on x-axis.");
        break;
    case (0, _):
        Console.WriteLine("This is on y-axis.");
        break;
    case var (x, y) when x == y:
        Console.WriteLine("This is on diagonal.");
        break;
    default:
        Console.WriteLine("Unknown position.");
        break;
}

위의 예제에서는 tuple 객체의 첫 번째 값이 0이고 두 번째 값이 0일 경우 "This is origin."이 출력됩니다.

위치 패턴

위치 패턴은 비교할 값이 특정 위치에 있는지 비교하는 패턴입니다.

var list = new List<int> { 1, 2, 3 };

switch (list)
{
    case var l when l.Contains(1) && l.Contains(2):
        Console.WriteLine("Contains 1 and 2.");
        break;
    case var l when l.Contains(2) && l.Contains(3):
        Console.WriteLine("Contains 2 and 3.");
        break;
    default:
        Console.WriteLine("Unknown list.");
        break;
}

위의 예제에서는 list 객체가 1과 2를 포함할 경우 "Contains 1 and 2."이 출력됩니다.

패턴식 switch문의 장점

패턴식 switch문을 사용하면 조건식과 비교할 데이터의 데이터 형식에 따라 다양한 패턴을 사용할 수 있습니다. 이를 통해 코드의 가독성과 유지 보수성이 향상됩니다.

결론

C# 8.0의 패턴식 switch문은 기존의 switch문보다 더욱 간결하고 유연한 코드를 작성할 수 있게 해줍니다. 상수 패턴, 타입 패턴, 속성 패턴, 튜플 패턴, 위치 패턴 등 다양한 패턴을 사용하여 조건식과 비교할 데이터의 데이터 형식에 따라 다양한 코드를 작성할 수 있습니다. 이번 글을 통해 C# 8.0의 패턴식 switch문에 대해 더욱 자세히 알아보았습니다.

저작자표시 비영리 변경금지 (새창열림)

'C#' 카테고리의 다른 글

C# 튜플 자료형  (1) 2023.06.20
실수형 변수 decimal, float, double  (1) 2023.06.19
C# Boxing  (0) 2023.06.12
C# Jump 문 : break, continue, return, goto  (0) 2023.06.10
C# 메서드 매개변수 in, ref, out, param  (0) 2023.06.09
'C#' 카테고리의 다른 글
  • C# 튜플 자료형
  • 실수형 변수 decimal, float, double
  • C# Boxing
  • C# Jump 문 : break, continue, return, goto
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    유니티
    devlife
    긴유통기한우유
    스크립트 실행 순서
    파이썬
    리스트
    learntocode
    list
    ipcamera
    스크립트 실행
    codingcommunity
    programming101
    codingtips
    상품 리뷰 크롤링
    unity
    카페24리뷰이관
    쇼핑몰리뷰
    라떼우유
    programmerlife
    C#
    리뷰이관
    cv2
    리뷰관리
    카페24리뷰
    셀레니움
    스마트스토어리뷰
    Python
    rtsp
    믈레코비타멸균우유
    appdevelopment
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
C# 패턴식 switch문
상단으로

티스토리툴바