我不知道标题里应该写些什么, 我想获取一个可空类型(Nullable)的Type(T)。 举个例子,我有一个对象,它的类型是 Nullable,我想要得到类似于 "System.Int32" 的东西(当然是类型本身,而不是字符串)。
我不知道标题里应该写些什么, 我想获取一个可空类型(Nullable)的Type(T)。 举个例子,我有一个对象,它的类型是 Nullable,我想要得到类似于 "System.Int32" 的东西(当然是类型本身,而不是字符串)。
尝试这个:Nullable.GetUnderlyingType(myType)
注意:myType必须是一个Type类型。
Type GetValueType(Type t)
{
return t.GetGenericArguments().First();
}
使用 GetType(),它的工作方式和预期一样。
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() 将返回底层类型。
typeof(T).GetGenericArguments()[0]
System.Nullable.GetUnderlyingType(typeof(Nullable<int>));
警告:糟糕的代码,没有检查,只是一个例子等等:
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);
}
}