116
A
回答
119
不,可爲空是結構。正在發生的事情是,可爲空的結構有兩個值:
- 的數據類型(
int
爲int?
,DateTime
爲DateTime?
等)的值。 - 一個布爾值,告訴數據類型值是否已經設置。 (
HasValue
是屬性。)
當您設置數據類型的值,該結構改變HasValue
爲true。
6
沒有,可空類型,其實是一個結構。運行時會智能地爲您處理空值的設置,給出參考類型的外觀,當它不是時......
+2
我想查詢'智能處理',而不是主觀的。就我個人而言,我覺得這種行爲令人困惑,並且經常令人討厭。 – nicodemus13 2012-12-17 18:03:48
1
可以爲空的類型不能是引用類型。
24
從Nullable Types (C# Programming Guide):
可空類型是System.Nullable結構的實例。
和
空類型表示可以分配空的值值型變量。您不能基於引用類型創建可爲空的類型。 (參考類型已經支持空值。)
因此,不,它們不是引用類型。
0
您應該不需要將引用類型設置爲可爲空的類型,因爲您可以在其位置傳遞null。
11
可爲空的類型既不是值類型也不是引用類型。它們更像值類型,但具有一些參考類型的屬性。
當然,可以設置爲空的類型爲null
。此外,可爲空的類型不能滿足通用的約束條件。此外,當您將HasValue
等於false
的可空類型框中時,您會得到一個指針而不是一個可裝箱的可空類型(與拆箱相似的情況)。
這些屬性使可爲空的類型爲非值類型,但它們肯定不是引用類型。它們是它們自己特殊的可空值類型。
相關問題
- 1. 確定類型是引用類型還是值類型
- 2. 值類型字段是引用類型?
- 3. 可選的引用類型
- 4. 泛型和可空類型
- 5. Mono.Cecil類型引用類型?
- 6. AutoMapper類型轉換器映射可空類型不可空類型
- 7. 可爲空的值類型只是包裝常規值類型?
- 8. 靜態類是引用類型還是值類型?
- 9. 如何通過反射區分值類型,可爲null的值類型,枚舉,可空 - 枚舉,引用類型?
- 10. 將可空類型轉換爲不可空類型?
- 11. 爲空的類型入門類型定義打破了非可空類型
- 12. 雙是不是可空類型
- 13. 引用類型.NET中的值類型
- 14. 什麼是C#中的可空類型?
- 15. 什麼是C#中的可空類型?
- 16. 引用類型是從WCF
- 17. VB.NET中的可空類型?
- 18. 引用類型
- 19. 引用類型
- 20. 定義對可空基本類型的泛型類型限制
- 21. 作爲泛型的可爲空類型
- 22. 的Java種類型和空引用
- 23. 重載一種方法來支持引用類型和可爲空類型
- 24. !ClrStack局部變量 - 它是值類型還是引用類型
- 25. 字符串是值類型還是引用類型?
- 26. 對象是引用類型還是值類型?
- 27. 動態 - 它是引用類型還是值類型?
- 28. 是字符串值類型還是引用類型
- 29. 是列出值類型還是引用類型?
- 30. c#值類型和引用類型
您不能在C#中重載'='運算符。布爾標誌由隱式轉換運算符設置,而不是由賦值運算符設置。 – sepp2k 2010-06-30 12:29:07
哎呀謝謝sepp2k。 – kemiller2002 2010-06-30 12:31:22