如果我從一個值類型聲明一個可爲空的值(通過Nullable或?符號),它是否仍然遵守值類型的規則(即,默認通過值傳遞,當它超出範圍時解除分配,而不是垃圾收集器運行)還是它變成一個引用類型,因爲它實際上是Nullable類型的?C#可爲空的變量仍然作爲值類型嗎?
回答
是的,System.Nullable是一個通用的Struct,即值類型。
我並不是以一種批判的方式來表達它,但我認爲一些參考文獻會有幫助,就像雅各所做的那樣。他們可能會引導讀者更深入的信息,使他能夠與其他問題進行一些聯繫等等。 – lmsasu 2010-01-03 12:41:28
我傾向於只提供文章,不能訪問使用谷歌我感覺幸運的功能。提供谷歌結果編號1的鏈接是無意義的練習。 – 2010-01-03 13:29:26
可爲空的值類型本質上只是一個值類型的結構包裝,它允許將它們標記爲null。
是這樣的:
struct Nullable<T>
{
public T Value;
public bool HasValue;
}
我相信它實際上比這更復雜的引擎蓋下,編譯器確實很多不錯的東西給你,讓你可以寫例如if(myInt == null)
。但是,是的,它們仍然是價值類型。
的文檔是在這裏:
http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx
正如你所看到的,文檔描述爲「可空結構」,這表明它是值類型。此外,該文檔還給出了該類型聲明的第一行:
public struct Nullable<T> where T : struct, new()
再次顯示該類型是值類型。
- 1. 類型的「變量」,類型爲「可變」
- 2. 在C++中,我可以將類類型表示爲變量嗎?
- 3. C#可爲空類型和值屬性
- 4. c/C++中的左移或右移操作可以使變量變爲空嗎?
- 5. 賦值後的變量值仍然爲零
- 6. 爲什麼變量仍然穩居
- 7. VB.NET:檢查變量是否爲Guid? (可爲空)類型
- 8. 可爲空類型作爲通用參數嗎?
- 9. 爲什麼SQL變量仍然保持以前的值?
- 10. 可爲空的值類型只是包裝常規值類型?
- 11. 對於可爲空的非引用類型變量需要new()嗎?
- 12. jQuery的類型函數作爲變量
- 13. 可爲空的變量類型 - .value成員
- 14. 如何將空值賦給C#中的非空類型變量?
- 15. C#轉換爲可空類型?
- 16. C#:可爲空類型(int?)對象?
- 17. 爲什麼prevoius值在reinitialaize變量後仍然存在 - PHP
- 18. Swift變量在賦值後仍然爲0?
- 19. 我們仍然可以使用routes = {routes}作爲react-router v4嗎?
- 20. 指針可以作爲變量嗎?
- 21. 爲什麼「無法投射類型值」錯誤仍然存在?
- 22. 索引值仍然爲0
- 23. 我可以爲C中的變量傳遞多個值嗎?
- 24. 可以賦值爲空嗎?
- 25. VHDL。爲什麼我的「rdy」值不變爲1?仍然困惑
- 26. 不可空值轉換爲可空類型的基本知識
- 27. 初始化泛型類作爲變量
- 28. 強制Type變量的值作爲特殊的基類型
- 29. Mysql變量值爲空
- 30. C++可變多類型有可能嗎?
您是否嘗試過自己測試這些東西? – 2010-01-03 03:24:30