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

标签 c# .net generics nullable

<分区>

Possible Duplicate:
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)有时为空。

最佳答案

您可以使用 Nullable.GetUnderlyingType :

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

关于c# - 如何检查泛型类型参数是否可为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6428781/

相关文章:

c# - View 必须派生自 WebViewPage

c# - C# 中 Excel 函数 ROUNDDOWN(number, num_digits) 的等价物是什么?

c# - 如何生成每行一页的自由格式 rdlc 报告

.net - MVC4 风格捆绑给出 403

c# - 如何在 C# 中的泛型列表中搜索特定值?

c# - 使用 ISerializable 反序列化 .NET 字典

c# - 从 Google Play 加载成就,无需任何 Unity 插件,仅使用 native 代码

c# - 如何传递表值参数

c# - 使用带有类型参数的工厂方法创建带有参数化构造函数的派生类

java - 泛型 - 继承类修改泛型类型并导致编译器错误