可空类型如何在C#中工作?

时间:2020-03-06 14:29:59  来源:igfitidea点击:

" int"和" int"之间的幕后区别是什么?和" int"?是" int"吗?某种参考类型?

解决方案

?将值类型(T)包装在Nullable <T>结构中:

http://msdn.microsoft.com/zh-CN/library/b3h38hb0.aspx

除了" int?"作为" Nullable"的快捷方式,CLR中还包含了一些基础结构,以便在" int?"之间进行隐式和静默转换。和" int"。这也意味着任何装箱操作都会隐式装箱实际值(即,不可能将Nullable装箱为Nullable,它始终会导致T装箱值或者null对象)。

当我们在编译时不知道T(仅在运行时知道)时,尝试创建Nullable时遇到了许多此类问题。 http://bradwilson.typepad.com/blog/2008/07/creating-nullab.html

对于有关Nullable类型的更好的"幕后"讨论之一,我们应该查看Jeffrey Richter的CLR Via Cby。

第18章中的整个章节专门讨论了Nullable类型。本书对于.NET CLR内部的许多其他领域也非常有用。