Eld*_*rum 4 c# language-features boxing nullable
在Nullable微优化(第一部分)中,Eric提到了Nullable<T>一种奇怪的拳击行为,这种行为无法通过类似的用户定义类型实现.
C#语言赋予预定义Nullable<T>类型的特殊功能有哪些?特别是那些无法在某种MyNullable类型上工作的.
当然,Nullable<T>有特殊的语法糖T?,但我的问题更多是关于语义.
Eri*_*ert 11
我得到的是:没有盒装可空的东西.当你装箱时int,你会得到一个盒装的参考int.当你装箱时int?,你得到一个空引用或对盒装的引用int.你永远不会得到盒装int?.
您可以轻松创建自己的Optional<T>结构,但不能实现具有该装箱行为的结构.Nullable<T>特殊行为融入了运行时.
这一事实导致了许多奇怪的事情.例如:
而且还有其他方式,这种Nullable<T>类型是"神奇的".例如,尽管它是结构类型,但它不满足结构约束.您无法创建具有该属性的自己的结构.