前段时间我认为 Nullable<> 值类型是类,封装了值类型和 HasValue 的 bool。使用一些隐式的 null 强制转换操作符,刚刚在 BCL 中实现。
但是作为一个结构,如何实现呢?Nullable<> 结构对于 CLR 来说是“特殊的”吗?
前段时间我认为 Nullable<> 值类型是类,封装了值类型和 HasValue 的 bool。使用一些隐式的 null 强制转换操作符,刚刚在 BCL 中实现。
但是作为一个结构,如何实现呢?Nullable<> 结构对于 CLR 来说是“特殊的”吗?
Nullable<T>
被定义为普通结构,但是 CLR 中有特殊的钩子可以[mscorlib]System.Nullable`1
根据HasValue
属性将一个实例装箱/拆箱为空。这里有更多细节
Nullable<>
是在 mscorlib 中实现的结构。
一件特别的事情是在 C# 编译器中,它识别X?
为Nullable<X>
.
这是关于 Nullable Types 的 MSDN 文章。
http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=VS.100).aspx
我不确定你想用 Nullable<> 做什么,除非你误解了 Nullable 类型是System.Nullable<T>
结构的实例。