前段时间我认为Nullable<>值类型是类,封装值类型和bool到HasValue。有一些隐式的转换操作数为null,只是在BCL实现。
但作为一个结构,如何实现这一目标?可空<>结构对于CLR来说是“特殊的”吗?
答案 0 :(得分:8)
Nullable<T>
被定义为普通结构,但CLR中有一些特殊的钩子可以根据[mscorlib]System.Nullable`1
属性将HasValue
的实例装箱/取消装箱为空。有关此here
答案 1 :(得分:0)
以下是有关Nullable Types的MSDN文章。
http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=VS.100).aspx
我不确定你想要使用Nullable&lt;&gt;,除非你误解了Nullable类型是System.Nullable<T>
结构的实例。
答案 2 :(得分:0)
Nullable<>
是在mscorlib中实现的结构。
C#编译器的一个特殊之处就是将X?
识别为Nullable<X>
的别名。