可空<>类型是BCL,CLR还是两者都实现?

时间:2011-01-14 17:56:57

标签: c# clr nullable base-class-library

前段时间我认为Nullable<>值类型是类,封装值类型和bool到HasValue。有一些隐式的转换操作数为null,只是在BCL实现。

但作为一个结构,如何实现这一目标?可空<>结构对于CLR来说是“特殊的”吗?

3 个答案:

答案 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>的别名。