我明白int和所有值類型一樣,都存儲在堆棧中。 Int可以裝入對象中,這意味着int是存儲在堆中的。但是當int存儲在List或int []中時會發生什麼?在c#中,當一個int存儲在一個List <int>或int []中時,int仍然在堆棧上,還是被裝箱/移動到堆中?
我知道列表T是一個類/引用類型/堆存儲類型 - 這是否意味着列表中的int被裝箱到堆上?
感謝
我明白int和所有值類型一樣,都存儲在堆棧中。 Int可以裝入對象中,這意味着int是存儲在堆中的。但是當int存儲在List或int []中時會發生什麼?在c#中,當一個int存儲在一個List <int>或int []中時,int仍然在堆棧上,還是被裝箱/移動到堆中?
我知道列表T是一個類/引用類型/堆存儲類型 - 這是否意味着列表中的int被裝箱到堆上?
感謝
與通用List<int>
類型工作時,沒有拳擊是必要的。
如果它被存儲在一個類型列表
http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx
它不盒裝「如果一個值類型用於類型T,編譯器生成的列表類的實現專門爲該值類型。這意味着一個List對象的list元素在使用該元素之前不必被裝箱,並且在約500個列表元素被創建之後,保存的不是裝箱列表元素的內存大於用於生成類實現的內存。 「
我知道列表T是一個類/引用類型/堆存儲類型 - 這是否意味着列表中的int被裝箱到堆上?
配售中存儲的int
是在堆上分配是不一樣的拳擊該int
。
拳擊是當int
單獨放置在它自己的object
包裝。這不會發生在通用的List<int>
中,但會發生在ArrayList
中。
「被存儲在棧上」不正確,它們可以被存儲在堆棧中。 http://stackoverflow.com/questions/1932155/why-value-types-are-stored-onto-stacks –
可能的重複http://stackoverflow.com/questions/1113819/c-arrays-heap-and-stack -and-值類型 –