我們可以將var和dynamic分配給任何數據類型,所以這些存儲在內存中的位置在哪裏? var在編譯時解析,我的理解是var根據賦值存儲在堆或棧中。但是動態在運行時被解析,所以在它們存儲在哪裏之前?Var或動態變量引用類型或值類型?
-3
A
回答
2
var
僅僅是變量聲明的語法糖。 var str = "abc";
和string str = "abc";
之間沒有功能差異,因此它是堆棧還是堆取決於您正在使用的類型。
https://msdn.microsoft.com/en-us/library/dd264741.aspx
dynamic
結合有一堆東西引擎蓋下但最終被類似地處理到object
,所以這將是這使它在堆上引用類型。
1
正如您所說,var
關鍵字對運行時間沒有意義。它是編譯器爲推斷類型換出的語言細節。
dynamic
對象始終爲boxed以表現爲引用,即使實際類型是值類型,例如int
。
您可以得出結論,聲明爲動態的變量將始終表現爲引用。引用本身將屬於它創建的範圍(本地堆棧,堆中的成員),但它引用的對象將存儲在堆內存中。
相關問題
- 1. 引用或值類型?
- 2. 引用類型或類類型變量不能接受給定值
- 3. 檢索動態值類型變量
- 4. 在Swift中是一個值類型或引用類型?
- 5. !ClrStack局部變量 - 它是值類型還是引用類型
- 6. C#'動態'變量可以引用靜態類型嗎?
- 7. Javascript類變量 - 這個。或var
- 8. 「C」sizeof與類型或變量
- 9. 哪一個更好?在變量類型聲明中使用var或使用像int這樣的真正類型,...?
- 10. 給定類型的動態變量
- 11. 調用靜態類的方法傳遞動態變量的類型與泛型
- 12. 類型或
- 13. c#值類型和引用類型
- 14. 值類型字段是引用類型?
- 15. 變量和值類型
- 16. 這是ZF2常量var或數據類型
- 17. 類型或引用丟失。 C#
- 18. 類型的「變量」,類型爲「可變」
- 19. 變量類型
- 20. 引用變量的數據類型(Java)
- 21. Haskell引用一個類型變量
- 22. C#\ Dynamic \如果動態變量var爲空(對象類型)或零(值類型),我可以在一條語句中檢查嗎?
- 23. 獲取動態類型的類類型?
- 24. 確定類型是引用類型還是值類型
- 25. Mono.Cecil類型引用類型?
- 26. 庫類或模型類?
- 27. 弱類型或強類型語言
- 28. 將類型賦值給變量 - 'A'是一種類型,但用作'變量'?
- 29. 枚舉或類型
- 30. Python類變量或類變量一般
你得到任何答案將是一個[詳細FPGA實現(https://blogs.msdn.microsoft.com/ericlippert/2009/04/27/the-stack-is-an-於實現的細節部分酮/) – stuartd