如何获取 Nullable<T> 实例的类型

4
如果我这样做:
Type type = typeof(Nullable<int>);

type 变量保存了正确的 Nullable'1 类型。

然而,如果我尝试这样做:

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

type最终持有的是System.Int32,即基础类型,但这不是我的预期。

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

请记住,我不知道可空实例的基础类型,因此无法调用typeof


@NirajDoshi 我不认为这是一个重复的问题。我不是在问为什么我没有得到正确的类型,而是如何才能得到正确的类型。 - Matias Cicero
1
请检查其他重复内容,其中包含一个解释与下面发布的答案类似的解决方案。 - Panagiotis Kanavos
https://dev59.com/72w05IYBdhLWcg3w72TN#6931816 是重复的答案,它告诉了你。 - user1228
1个回答

3

虽然不够优雅,但你可以将其封装在一个通用函数中:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接