Favicon

List pattern

Peponi1/8/20252m

C#
SyntaxKeywordPatternArrayCollection..

1. Introduction

다음 C# 식과 문은 패턴을 지원한다.

여기서는 C# 11부터 지원되는 목록 패턴에 대해 설명한다. 목록 패턴은 배열, 컬렉션에 대해 특정 시퀀스와 매칭하는 기능을 제공한다.

2. Example

기본 사용
List<int> ints = [-1, 2, 3];
 
Console.WriteLine(ints switch
{
    [-1, 2, 3] => true,
    _ => false
});
 
/* output:
True
*/
패턴 중첩
List<int> ints = [-1, 2, 3];
 
Console.WriteLine(ints switch
{
    [< 0, var mid, 5 or _] => mid,
    _ => false
});
 
/* output:
2
*/

목록 패턴은 범위 연산자 (..)를 통한 부분 매칭을 지원한다.

  • .. 연산자로 매칭하는 요소의 수는 0개 이상이며, 각 패턴에서 하나만 사용할 수 있다.
  • .. 연산자와 함께 다른 패턴 및 하위 패턴을 중첩할 수 있다.
기본 사용
List<int> ints = [-1, 2, 3, 4, -5];
 
Console.WriteLine(ints switch
{
    [.., > 0, > 0] => "Case 1",
    [> 0, .., > 0] => "Case 2",
    [< 0, > 0, ..] => "Case 3",
    _ => false
});
 
/* output:
Case 3
*/
패턴 중첩
List<int> ints = [-1, 2, 3, 4, -5];
 
Console.WriteLine(ints switch
{
    [.., > 0, > 0] => "Case 1",
    [> 0, .. { Count: > 2 }, > 0] => "Case 2",
    [< 0, > 0, .. var datas] => string.Join(", ", datas),
    _ => false
});
 
/* output:
3, 4, -5
*/

3. 참조 자료