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