Ear*_*rlz 18 c# generics nullable reference-type generic-constraints
可能重复:可以为
Nullable类型作为通用参数?
我遇到了泛型类型约束非常奇怪的事情.我有一个这样的课:
public SomeClass<T> where T:class
{
}
但是,我发现我不能像我期望的那样使用可空类型:
new SomeClass<int?>();
我得到一个int?必须是引用类型的错误.Nullable真的只是一个带有语法糖的结构,使它看起来像一个引用类型吗?
Mik*_*ray 21
Nullable<T>是一个struct(参见MSDN),但它是唯一struct不满足struct约束的.因此,在使用或约束Nullable时,不能将a 用作泛型类型参数.classstruct
Nullable<T>不仅仅是一个含有一些合成糖的结构.它在CLR中有一些特殊的支持.例如,它有特殊的拳击行为.具体来说,可以为空的盒子.标的值是盒装的.如果nullable为空值(HasValue为false),则将其转换为空引用.此外,任何Nullable<T>to的转换运算符都会Nullable<U>从转换中T转移到U.这些是您无法在.NET 1.0/1.1中实现的功能.
| 归档时间: | 
 | 
| 查看次数: | 2073 次 | 
| 最近记录: |