寻找一种更优雅的方法来检查可以为空的值类型

时间:2010-07-08 16:56:35

标签: c# nullable value-type

要检查值类型是否可为空我现在正在做这样的事情:

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

有更优雅的方法吗?

3 个答案:

答案 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;

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