Possible Duplicate:
Nullable type as a generic parameter possible?
我遇到了一件非常奇怪的事情,它有泛型类型约束。我有这样一个类:
public SomeClass<T> where T:class
{
}
但是,我发现我不能像我期望的那样使用可为 null 的类型:
new SomeClass<int?>();
我收到一条错误消息,提示 int?
必须是引用类型。 Nullable 真的只是一个带有语法糖以使其看起来像引用类型的结构吗?
Nullable<T>
是 struct
(参见 MSDN )然而它是唯一的 struct
不满足 struct
约束。因此,您不能使用 Nullable
作为泛型类型参数时 class
或 struct
使用约束条件。
Nullable<T>
不仅仅是带有一些语法糖的结构。它在 CLR 中对其某些行为有特殊支持。例如,它有特殊的拳击行为。具体来说,可空值永远不会被装箱。基础值是盒装的。如果可为空的是空值(HasValue 为假),则它被转换为空引用。此外,任何 Nullable<T>
的转换运算符至 Nullable<U>
从 T
的转换中解除至 U
.这些是您无法在 .NET 1.0/1.1 中实现的功能。