パターンマッチングのプロパティパターンを使ってみる(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 みたいな、修飾が色々されたクラスを作成することも多いので、{ }で済ませられるのはとても助かっています。