2011-06-29 150 views

回答

33

引用类型被存储为对象实例的引用(如指针)。
null表示不指向对象实例的引用。

值类型作为值本身存储,没有任何引用。
因此,根据定义包含一个值,具有null值类型—值类型没有意义。

Nullable<T>是一个值类型,其中HasValue标志可以是false以指示没有值。它仍然有一个值(当HasValuefalse,Valuedefault(T)),但HasValue标志会告诉您忽略该值。
它与null无关,除了CLR自动将null装箱值设置为Nullable<T>HasValue设置为false

+0

我们可以使变量为空吗?运营商。例如,int? x = null; – Shekhar

+3

@Shekhar:他意识到这一点。它与'null'无关。 – SLaks

+0

感谢您的解释。 – Shekhar

0

像“Int32”这样的值类型使用32位存储来存储。正好有3294,967,296个值可以用32位来表示,而Int32可以容纳4,294,967,296个不同的值。如果-2,147,483,648不是有效的Int32值,则可以使用它来表示“null”,但其二进制表示不全为零的事实会使事情复杂化。相比之下,引用类型中可能的位组合的数量远远超过可能的有效引用的数量,因此没有任何困难保留位组合来表示“空”。

+0

任何参考(文章)你正在解释什么?我仍然不清楚你放置的想法。 – Marshal

相关问题