2009-04-29 13 views

答えて

6

あなたはこのような何かを行うことができ

public Type GetTypeOrUnderlyingType(object o) 
{ 
    Type type = o.GetType(); 
    if(!type.IsGenericType){return type;} 
    return type.GetGenericArguments()[0]; 
} 

用法:

int? i = null; 

type = GetTypeOrUnderlyingType(i); 
type == typeof(int); //true 

これは、任意の汎用タイプのために働くだろう、ただNullableだけではありません。

+0

これは非常に一般的な目的にする方法はありますか?文字列がnullの場合はどうですか?まだ文字列を返すことはできますか? – andleer

+0

いいえ。通常の参照型では機能しません。あなたが何も持っていなければ、それが何であるかを教えてはいけません。それは私にあなたに空の箱を与えて、本の色が何であるかを尋ねるようなものです。彼らは少し奇妙で、nullを表すオブジェクトインスタンスを持っているので、nullable型のために働きます。 – pipTheGeek

+0

他の一般的なタイプを渡すとどうなりますか?たとえば、リスト、アクションなど – LukeH

2

Nullable<T>がわかる場合は、のstaticヘルパーをNullableに使用できます。

int? i = null; 

type = Nullable.GetUnderlyingType(i.GetType()); 
type == typeof(int); // true 
関連する問題