如何检查泛型类型参数是否可为空?

时间:2011-06-21 16:30:34

标签: c# .net generics nullable

  

可能重复:
  Determine if a generic param is a Nullable type

我正在尝试确定类型参数是否为Nullable。

    public T Get<T>(int index)
    {
        var none=default(T);
        var t = typeof(T);
        BaseVariable v = this[index].Var;
        if (T is Nullable) //compiler error
        {
            if (v == ... )
            {
                return none;
            }
        }
        //....
    }

我该怎么做?我尝试过t == typeof(Nullable),但这总是导致错误。

我想要发生的事情是foo.Get<bool?>(1)有时会为空。

1 个答案:

答案 0 :(得分:39)

您可以使用Nullable.GetUnderlyingType

var t = typeof(T);
// ...
if (Nullable.GetUnderlyingType(t) != null)
{
    // T is a Nullable<>
}