的Nullable<T>
的定义是:为什么我不能写Nullable <Nullable <int>>?
[SerializableAttribute]
public struct Nullable<T> where T : struct, new()
约束where T : struct
意味着T
只能是值类型。所以我非常好理解,我不能写:
Nullable<string> a; //error. makes sense to me
因为string
是引用类型,不是值类型。但我不明白为什么我不能写
Nullable<Nullable<int>> b; //error. but why?
为什么不允许?毕竟,Nullable<int>
是一个值类型,因此它可以是Nullablle<T>
的类型参数。
当我编译它ideone,它给这个错误(ideone):
错误CS0453: '诠释' 的类型必须是一个非空值类型,以便在通用类型或方法使用它作为类型参数“T”“System.Nullable” 编译失败:1个误差(S),0警告
错误是什么? – asawyer
对不起,我的回答是错误的。 'new Nullable();'编译(产生一个值为null的int?'),尽管默认构造函数没有记录。 –
BoltClock
是的,答案出现在您尝试编译代码时应该得到的错误中。 – BoltClock