概要
C# 7.0にて導入されたパターンマッチング
本来はアップキャストされたオブジェクトを安全にダウンキャストして分岐を可能にするものだが実はnullチェックにも使える
// 本体の使い方
object obj = "objectなstring";
if (obj is string str)
{
//このスコープ中のみobjがstringにキャストされたstr変数を使うことができる。
//キャストできなかった場合はif内部を通らない
}
nullチェックにも活用可能
C#ではnullは型無しとしているためその仕様を逆手に取った方法
従来の方法
var obj = GetNullOrString(); //半々の確率でnullか実体のあるstringを返してくれるメソッド
if (obj != null)
{
//nullではない場合if内部を通る
}
パターンマッチング
if (GetNullOrString() is string str)
{
//null時には型無し = string型では無いためif内部を通らない
//但しスコープはif文限りのため外からはstr変数を使えないことに注意
}