rksoftware

Visual Studio とか C# とかが好きです

C# 9.0 の確認「パターン マッチングの拡張機能」

C# 9.0 の確認の目次はこちら

■ パターン マッチングの拡張機能

ドキュメントはこちら

C# 9 には、新しいパターン マッチングの機能強化が 」 から始まるブロックです。
皆さん大好きなパターンマッチングが強化されました。これは使いこなしたいですね。

■ コード

■ 条件一つ

この強化によってこんなことが書けるようになりました。

int a = new Random().Next();
if(a is > 1)

これまでの書き方だと

int a = new Random().Next();
if (a > 1)

こんな感じです。これだけ見ると is が増えただけでうれしくは感じないかもしれません。本領はこの先です。

■ 条件二つ

条件として上限値と下限値を設定したい場合こんなことが書けます。

int a = new Random().Next();
if (a is > 1 and < 3)

これまでの書き方だと

int a = new Random().Next();
if (a > 1 && a < 3)

こんな感じです。変数 a を 2 回書くの、すごく嫌じゃないですか。私は嫌です。でもこれからはもう a を書くのは 1 回です。

■ かっこと or

かっこと or も使えます。

int a = new Random().Next();
if (a is (> 1 and < 3) or (> 100 and < 200))

こんな感じです。

■ not

否定の not も使えます。

int a = new Random().Next();
if (a is not (> 1 and < 3))

null チェックに使うのがお勧めのようですね。

string a = null;
if(a is not null)

■ switch で使う

switch 式で使うとこんな感じです。

string Method(object arg)
{
    var text = arg switch
    {
        > 1 => "> 1",
        "a" => "a",
        not null => "not null",
        _ => "null",
    };
    return text;
}

■ まとめ

この機能はとても使いやすいし、使うほどバグも減っていく素晴らしい機能ですね。完全に理解して使いこなしたいですね。