在运行时获取Nullable <t>的Type(T)?</t>

时间:2011-11-29 15:20:12

标签: c# nullable

我真的不知道要添加到标题中的内容,我想获得Nullable的Type(T)。 例如,我得到了一个Type为Nullable的对象,我希望得到类似“System.Int32”的东西(当然不是字符串)

6 个答案:

答案 0 :(得分:12)

试试这个:Nullable.GetUnderylingType(myType)

仅供参考:myType必须是Type

答案 1 :(得分:2)

这种方法可以解决问题:

Type GetValueType(Type t)
{
   return t.GetGenericArguments().First();
}

答案 2 :(得分:1)

使用GetType()它可以作为(un)预期的。

if (typeof(int?) == typeof(int))
    MessageBox.Show("It works with definitions");
if (new Nullable<int>(2).GetType() == typeof(int))
    MessageBox.Show("It works with instances!");

此示例代码将显示最后一个消息框。 GetType()将返回基础类型。

答案 3 :(得分:0)

Nullable是一个通用构造,所以你应该从类型的GenericArguments中获取它,如下所示:typeof(T).GetGenericArguments()[0]

答案 4 :(得分:0)

System.Nullable.GetUnderlyingType(typeof(Nullable<int>));

答案 5 :(得分:0)

警告:可怕的代码,没有检查,只是一个例子等:

using System;

static class Program {

    public static void Main(params string[] args) {
        Type t = typeof(int?);
        Type genericArgument = t.GetGenericArguments()[0];
        Console.WriteLine(genericArgument.FullName);
    }
}