我知道有可能有Nullable值類型包裝值類型,並提供存儲空值的能力。 但是有沒有技術原因不允許值類型爲空或原因只是概念?爲什麼值類型不能爲空
17
A
回答
33
引用類型被存儲爲對象實例的引用(如指針)。
null
表示不指向對象實例的引用。
值類型作爲值本身存儲,沒有任何引用。
因此,根據定義包含一個值,具有null
值類型—值類型沒有意義。
Nullable<T>
是一個值類型,其中HasValue
標誌可以是false
以指示沒有值。它仍然有一個值(當HasValue
是false
,Value
是default(T)
),但HasValue
標誌會告訴您忽略該值。
它與null
無關,除了CLR自動將null
裝箱值設置爲Nullable<T>
而HasValue
設置爲false
。
0
像「Int32」這樣的值類型使用32位存儲來存儲。正好有3294,967,296個值可以用32位來表示,而Int32可以容納4,294,967,296個不同的值。如果-2,147,483,648不是有效的Int32值,則可以使用它來表示「null」,但其二進制表示不全爲零的事實會使事情複雜化。相比之下,引用類型中可能的位組合的數量遠遠超過可能的有效引用的數量,因此沒有任何困難保留位組合來表示「空」。
+0
任何參考(文章)你正在解釋什麼?我仍然不清楚你放置的想法。 – Marshal
相關問題
- 1. 爲什麼我不能將泛型類型轉換爲值類型
- 2. React.createElement:類型不能爲空
- 3. 爲什麼對象類不是空值
- 4. 模型值爲空,但爲什麼?
- 5. 爲什麼不能訪問該類型?
- 6. 爲什麼不能注入泛型類?
- 7. 爲什麼&&和||不能用於可空類型?
- 8. 屬性不能爲空時使用什麼異常類型?
- 9. 爲什麼graphql,紅寶石的布爾類型不是空值
- 10. 類類型轉換:爲什麼類型轉換功能不叫
- 11. 爲什麼不能模板非類型參數是類類型
- 12. 值類型數據結構不能接受爲什麼
- 13. 爲什麼不能修改的左值具有數組類型?
- 14. 爲什麼我不能將TextLength分配給Long值類型?
- 15. 爲什麼我們不能鎖定值類型?
- 16. 爲什麼我不得不爲None返回一個類型值?
- 17. 類型不推導爲r值參考:爲什麼不呢?
- 18. 爲什麼這種類型不能分配給參數類型?
- 19. 爲什麼null類型的值不能用作double類型的默認參數?
- 20. 爲什麼不能將可空值聲明爲const?
- 21. 爲什麼不能有一個類型參數是什麼?
- 22. 值不能爲空
- 23. 值不能爲空
- 24. 爲什麼不能爲嵌套函數推斷類型
- 25. 爲什麼不能將C常量存儲爲短類型
- 26. 爲什麼'as'操作符不能用於解析不可爲空的值類型?
- 27. 不能將類型'char'隱式轉換爲類型Test <char>,爲什麼?
- 28. 爲什麼我們不能將char類型變量的默認值設置爲''
- 29. 不能爲索引類型爲'String'的類型'[String:AnyObject]'下標值
- 30. System.Drawing.Point是一個值類型。爲什麼?
我們可以使變量爲空嗎?運營商。例如,int? x = null; – Shekhar
@Shekhar:他意識到這一點。它與'null'無關。 – SLaks
感謝您的解釋。 – Shekhar