📏

[C#]パターンマッチングはswitch式でもswitch文でも使える

1 min read

すっかり勘違いしていたのですが、C#のパターンマッチングはswitch式だけではなくswitch文でも使えます。

ということで、以下のコードはC# 9.0 の有効なコードです。

object Switch式(IList<int> collection, int num) =>
    (num, collection) switch
    {
        (_, int[] array) when array.Length > 0 => array[0],
        ( < 0, { Count: >= 1 } or { IsReadOnly: true }) => (0, 1),
    };

void Switch文(IList<int> collection, int num)
{
    switch ((num, collection))
    {
        case (_, int[] array) when array.Length > 0:
            Console.WriteLine(array[0]);
            break;
        case ( < 0, { Count: >= 1 } or { IsReadOnly: true }):
            Console.WriteLine((0, 1));
            break;
    }
}