ある型が null 許容型(Nullable<>
)であるか否か判別する方法がMSDNで紹介されています。
これを使うと、ジェネリック型 T
が null 許容型であるか否か判別するメソッドは次のように書けます。
理屈はわかりますがちょっと長ったらしいですね。
ところで、C#のジェネリックには default
キーワードがあります。
ジェネリック型 T
がクラス型または null 許容型である場合、 default(T)
は null
になります。
Nullable<>
は値型なので、型 T
が値型であり default(T)
が null
であればそれは null 許容型ということになります。
というわけで、上述のメソッドは次のようにも書けます。
かなりスッキリしました。
型自体ではなく System.Type
オブジェクトしかない場合にはこの方法は使えないため、MSDNの方法が不要というわけではありません。