2008年06月23日

Nullableかどうかを判断する

   このエントリーをはてなブックマークに追加 Clip to Evernote
ローカル変数 int? x が宣言されているときに、オブジェクト x が、nullableかどうかを調べる方法は無いのかな?
まあ、ローカル変数なんだから、それは、明らかに、nullableだってわかるから
そんな場面はないか?

じゃあ、引数でわたってきた場合は、これも同じ理由で nullableってわかる。
引数の型がobject の場合は、実際の型が nullableかどうかを知る手段はないけど、
== null とか聞けばいいんだから、これも無くても困らないような気がする。

結局、nullableかどうかを調べる必要があるのは、クラスのメンバー変数だけかな。
この場合は、リフレクションを使って、FieldInfoを取り出せば、

Type type = fieldInfo.FieldType;
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<> )) {…}

というコードで判断できる。

ところで、

typeof(Nullable<>)

なんていう書き方が出来るのを最近まで知らなかった。


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/51550902