2015-11-04 62 views
4

如果我这样做:如何获得可空<T>实例的类型

Type type = typeof(Nullable<int>); 

type变量有正确的Nullable'1类型。

但是,如果我尝试这样做:

Nullable<int> n = 2; 
Type type = n.GetType(); 

type最终控股System.Int32这是基本类型,但不是我期待的。

如何获得Nullable<>实例的类型?

请记住,我不知道可为空实例的基础类型,所以我不能拨打typeof

+0

@NirajDoshi我看不出这是一个重复。我不是问为什么我没有得到正确的类型,而是我怎么才能得到正确的类型。 –

+1

检查其他重复,它包含解释*和*类似于下面发布的答案的解决方案。 –

+0

http://stackoverflow.com/a/6931816/1228是在告诉你的愚蠢的答案。 – Will

回答

3

不优雅,但你可以在一个通用函数把它包装:

public static void Main() 
{ 
    int? i = 2; 
    Console.WriteLine(type(i)); 
} 

public static Type type<T>(T x) { return typeof(T); }