パターンマッチングのプロパティパターンを使ってみる(Case Null検査)

null検査のときの書き方問題

HogeのInstanceであるhogeがnon nullである検査をしたい場合、

hoge is Hoge

と書いてしまうことが多いのですが、C#8.0から、パターンマッチングにプロパティパターンが追加されているので、

hoge is { }

と書けばnon nullかの検査が出来るので、hogeの型がめちゃんこ長い名前でも{ } って書くだけなので、書くのが楽になりました。

もちろん型パターンでの型変換も書ける

if (hoge is {} nonNullHoge ){
    // ・・・
}

ただ、この場合、あくまでHoge?がHogeになるだけなので、型変換としてのうまみは微妙なところです。 Object型を、型パターンで is string stringHoge みたく、変換するようなニーズには対応できないので。 通常、hoge is {} の検査をすれば、C#のフロー解析では、後続のコードでは、hogeが Non Null であるという判断をするはずなので、nonNullHogeに変換する必要性はあまり感じないです。

とはいえ、Applicationを書いていると、HogeFugaPiyoForFooBarXXX みたいな、修飾が色々されたクラスを作成することも多いので、{ }で済ませられるのはとても助かっています。