簡體   English   中英

Var 或動態變量引用類型還是值類型?

[英]Var or Dynamic variables reference type or value type?

我們可以將 var 和 dynamic 分配給任何數據類型,那么它們存儲在內存中的什么位置? var 在編譯時解析,我的理解是 var 根據賦值存儲在堆或堆棧中。 但是動態是在運行時解析的,那么在此之前它們存儲在哪里?

var只是變量聲明的語法糖。 var str = "abc";之間沒有功能差異var str = "abc"; string str = "abc"; ,因此它是在堆棧上還是在堆上取決於您正在使用的類型。

https://msdn.microsoft.com/en-us/library/dd264741.aspx

dynamic在引擎蓋下合並了一堆東西,但最終的處理方式與object類似,因此它將是一個將其放在堆上的引用類型。

https://msdn.microsoft.com/en-us/library/bb383973.aspx

正如你所說, var關鍵字對運行時沒有意義。 它是一種語言細節,由編譯器替換為推斷類型。

dynamic對象總是被裝箱以作為引用,即使實際類型是一個值類型,例如int

您可以得出結論,聲明為 dynamic 的變量將始終表現為引用。 引用本身將屬於創建它的范圍(堆棧上的局部變量,堆上的成員),但它引用的對象將存儲在堆內存中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM