C#9のパターンマッチングが使いやすい!(C#)

C#

最近.NET5でASPを使ってWebサイトを作り始めたのですが、LINQの条件をだらだらと書いていたらReshaperさんがなにやらRecommendしてくるではありませんか!

var someList1 = hogeList.Where(x => x.Name == "Hoge" || x.Name == "Fuga");
↓
var someList2 = hogeList.Where(x => x.Name is "Hoge" or "Fuga");

えっ、なにこれ!
見やすい!!!!!

今まで「x.Name ==」の部分が重複して見にくい(醜い)なぁと思ってました。
ふと別のプロパティに変更になったときなんかも直すの面倒で、重複排除できたらと思っていましたがまさか実装されるとは!これはめっちゃ嬉しい!
||や&&も読みやすくなって初心者にも使いやすいんじゃないでしょうか。

公式によると以下の説明です。

"*型パターン*" は、変数が型である場合に一致します
"*かっこで囲まれたパターン*" では、パターンの組み合わせの優先順位が適用または強調されます
"*接続的 and パターン*" では、両方のパターンが一致することが要求されます
"*離接的 or パターン*" では、どちらかのパターンが一致することが要求されます
"*否定的 not パターン*" では、パターンが一致しないことが要求されます
"*関係パターン*" では、入力が定数より小さい、より大きい、以下、または以上であることが要求されます。
C# の歴史 - C# ガイド - C#
この言語の最初のバージョンがどのようなものであったか、そしてそれ以降どのように進化してきたかについて説明します。

これを利用するとこんな感じで範囲指定が書けたりします。
まんま英語なのでそのまま読み下せます。

var hoge = 3;
if(hoge is > 0 and <= 5)
{
    // do something
}

null判定もこんな感じ。
!=より文字数増えてる、とか言わないでください。
わけのわからない記号より圧倒的に読みやすいです。

var hoge;
if(hoge is not null){}
if(hoge is null){}

お仕事でつかえるようになるのは何年先やら、とは思うものの個人プロジェクトではバンバン使っていきましょう!

C#
スポンサーリンク
Once and Only

コメント