为了检查一个值类型是否可以为空,我目前正在做这样的事情:
int? i = null;
bool isNullable = i.GetType().ToString().Contains("System.Nullable");
有没有更优雅的方法来做到这一点?
为了检查一个值类型是否可以为空,我目前正在做这样的事情:
int? i = null;
bool isNullable = i.GetType().ToString().Contains("System.Nullable");
有没有更优雅的方法来做到这一点?
您可以使用Nullable.GetUnderlyingType(Type)
-null
如果它不是可以为空的类型开始,则将返回,否则将返回基础值类型:
if (Nullable.GetUnderlyingType(t) != null)
{
// Yup, t is a nullable value type
}
请注意,这使用Nullable
静态类,而不是Nullable<T>
结构。
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
{
// it is a nullable type
}
这就是 Microsoft 建议您识别 Nullable 类型的方式
int? i;
bool isNullable = i is Nullable;
编辑:没关系,这不起作用。