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