如果我從一個值類型聲明一個可爲空的值(通過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. c#類變量在調用函數後仍然爲空
- 2. 類型的「變量」,類型爲「可變」
- 3. 作爲泛型的可爲空類型
- 4. 變量(form.onsubmit)在賦值後仍然爲空
- 5. 在C++中,我可以將類類型表示爲變量嗎?
- 6. C#可爲空類型和值屬性
- 7. c/C++中的左移或右移操作可以使變量變爲空嗎?
- 8. 實體框架:設置爲空的假,但類型仍然是可空
- 9. 爲什麼聲明爲類成員的const變量仍然可以修改?
- 10. 爲什麼我的類變量在我賦值之後仍然爲零? (Ruby)
- 11. C#處理的類型不允許來自F#的null仍然可以爲空嗎?
- 12. 變量類型爲遠程類空
- 13. 賦值後的變量值仍然爲零
- 14. 我可以在Objective-C中將協議作爲類變量嗎?
- 15. shell腳本中的循環問題後,變量仍然爲空
- 16. C++:從變量值作爲變量
- 17. VB.NET:檢查變量是否爲Guid? (可爲空)類型
- 18. 可爲空類型作爲通用參數嗎?
- 19. 爲什麼變量仍然穩居
- 20. 分配給對象後,變量仍然爲空
- 21. 我可以讓一個可爲空的變量爲負數嗎?
- 22. 我可以傳遞一個泛型變量的類型作爲參數嗎?
- 23. 爲什麼SQL變量仍然保持以前的值?
- 24. 可空類型和.HasValue仍然會拋出一個空異常
- 25. 變量可以同時爲空而不爲空嗎?
- 26. 可爲空的值類型只是包裝常規值類型?
- 27. 對於可爲空的非引用類型變量需要new()嗎?
- 28. C++ - 爲什麼`const類型和變量`作爲函數輸入?
- 29. C# - 傳遞變量類型爲遞歸工廠作爲通用
- 30. 可選綁定嘗試?並作爲?仍然生成可選類型
您是否嘗試過自己測試這些東西? – 2010-01-03 03:24:30