今回はC# 10.0で改良されたパターンマッチングのプロパティパターンをちょこっと触ってみました。
プロパティパターン (C# 8.0)
まずはC# 8.0で使用できるようになったプロパティパターンのサンプルです。
プロパティパターンは、プロパティに対して再起的にマッチングを行うパターンです。
プロパティだけでなくフィールドにも使用できます。
例えば、下記のようなPointクラスのXとYによって返す値を決定したいコードがあったとします。
上記のコードを、プロパティパターンを使用すると下記のように書くことができます。
(switch式でさらに簡潔にしてます。
呼び出し側はこんな感じで。
結果はこうなります。
C# 10.0での拡張
このプロパティパターンですが、入れ子のプロパティやフィールド参照で書けるようになったみたいです。
下記のようなクラスがあったとします。
Item
クラスのNameの文字列長をチェックしたい場合、
下記のように{ Name.Length: 1 }
と書けるようになりました。
また、下記のようにAttribute
クラスをnewしてると
「A is null」の方を通りますが、Attributeのプロパティに何もセットしない場合は
「A is not null」の方を通ります。これは{ Attribute.A: ・・・ }と書いても、まずAttributeオブジェクトのnullチェックをしているためです。
自分用のメモとして残しているのでちょっと分かりにくいかもですが、より簡潔にコードを書けるようになっているのだなということはなんとなく分かっていただけたかと。 掘り下げてみたい方はすみませんがググってみてください。
以上、もりもりでした。