可空值的类型只是常规值类型的包装吗?

时间:2011-05-16 04:38:47

标签: c# .net nullable

我问的原因是你可以使用Value属性将可空类型转换为常规类型。这让我觉得常规类型只是包含在可空类型中。

3 个答案:

答案 0 :(得分:7)

是的,它是一个通用结构:

public struct Nullable<T> where T : struct, new()

如果你只看到T?语法 - 但这只是syntactic sugar,那么这可能会更令人困惑,编译器正在将其更改为Nullable<T>

来源:http://msdn.microsoft.com/en-us/library/b3h38hb0.aspxhttp://msdn.microsoft.com/en-us/library/1t3y8s4s.aspx

答案 1 :(得分:3)

是 - 'Nullable<T> Structure'

  

表示其底层的对象   type是一个值类型,也可以是   像参考类型一样指定null。

[顺便说一句,如果你好奇的话,你可以使用反射器'来看看引擎盖']

答案 2 :(得分:2)

根据MSDN "Nullable types are instances of the System.Nullable<T> struct. A nullable type can represent the correct range of values for its underlying value type, plus an additional null value"