2011-06-29 154 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

相關問題