要检查值类型是否可为空我现在正在做这样的事情:
int? i = null;
bool isNullable = i.GetType().ToString().Contains("System.Nullable");
有更优雅的方法吗?
答案 0 :(得分:14)
您可以使用Nullable.GetUnderlyingType(Type)
- 如果它不是可以为空的类型,则返回null
,否则返回基础值类型:
if (Nullable.GetUnderlyingType(t) != null)
{
// Yup, t is a nullable value type
}
请注意,这使用Nullable
静态类,而不是Nullable<T>
结构。
答案 1 :(得分:7)
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
{
// it is a nullable type
}
这就是Microsoft推荐您Identify Nullable Types
的方式答案 2 :(得分:0)
int? i;
bool isNullable = i is Nullable;
编辑:没关系,这不起作用。