4

为了检查一个值类型是否可以为空,我目前正在做这样的事情:

int? i = null;
bool isNullable = i.GetType().ToString().Contains("System.Nullable");

有没有更优雅的方法来做到这一点?

4

3 回答 3

14

您可以使用Nullable.GetUnderlyingType(Type)-null如果它不是可以为空的类型开始,则将返回,否则将返回基础值类型:

if (Nullable.GetUnderlyingType(t) != null)
{
    // Yup, t is a nullable value type
}

请注意,这使用Nullable静态类,而不是Nullable<T>结构。

于 2010-07-08T17:02:33.577 回答
7
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
{
  // it is a nullable type
}

这就是 Microsoft 建议您识别 Nullable 类型的方式

于 2010-07-08T17:01:34.473 回答
0
int? i;
bool isNullable = i is Nullable;

编辑:没关系,这不起作用。

于 2010-07-08T17:01:57.763 回答