.net - 如果 T 是类型 arg,如何使用 Nullable<T>?

标签 .net generics nullable

class Test<T>
{
    T? obj;
}

错误:

The type 'T' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'System.Nullable'



我需要保留对类型 T 的可能为空的引用,但 T 可以是值类型或引用类型,而且您不能拥有 Nullable<T>如果 T 是引用类型。有什么解决办法吗?

最佳答案

只有值类型可以为空(引用类型本质上已经可以为空)。所以你可以应用与 Nullable<T> 相同的通用约束类(class):

class Test<T> where T: struct
{
    T? obj;
}

这当然是相同的:
class Test<T> where T: struct
{
    Nullable<T> obj;
}

并说明泛型参数必须满足相同的约束。

关于.net - 如果 T 是类型 arg,如何使用 Nullable<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7705741/

相关文章:

java - 在 Java 中获取 List 中的泛型类型

generics - 使用 Self 作为通用类型

C#:有一个 "Optional"参数,默认情况下使用所需参数的值

c# - 为什么递增 Nullable<int> 不会抛出异常?

javascript - 如何通过 javascript 将 null 传递给 ASP.NET Web 服务方法的可空参数

c# - 在 .Net 中覆盖/处理我自己的类型转换

asp.net - System.Web.UI.Control.LoadRecursive() - 堆栈不足,无法继续安全地执行程序。

c# - 为什么我的 Close 函数没有被调用?

java - 如何在 ResponseEntity<> 中传递未知类类型

.net - 由 C# sockets CONNECTIONS