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

‘int?’之间的幕后差异是什么? 和’int’? ‘int?’ 某种程度上是一种参考类型?

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

http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx

除了“int?” 作为“Nullable”的快捷方式,CLR中还有基础设施,以便在“int”之间进行隐式和静默转换。 和“int”。 这也意味着任何装箱操作都会隐式地封装实际值(即,不可能将Nullable设置为Nullable,它总是导致T的盒装值或空对象)。

当你在编译时不知道T时尝试创建Nullable时遇到了很多这些问题(你只在运行时知道它)。 http://bradwilson.typepad.com/blog/2008/07/creating-nullab.html

对于关于Nullable类型的更好的“幕后”讨论之一,你应该看看Jeffrey Richter的CLR Via C# 。

第18章的全部内容专门讨论Nullable类型。 本书也适用于.NET CLR内部的许多其他领域。