2011-07-19 39 views
1

我明白int和所有值類型一樣,都存儲在堆棧中。 Int可以裝入對象中,這意味着int是存儲在堆中的。但是當int存儲在List或int []中時會發生什麼?在c#中,當一個int存儲在一個List <int>或int []中時,int仍然在堆棧上,還是被裝箱/移動到堆中?

我知道列表T是一個類/引用類型/堆存儲類型 - 這是否意味着列表中的int被裝箱到堆上?

感謝

+1

「被存儲在棧上」不正確,它們可以被存儲在堆棧中。 http://stackoverflow.com/questions/1932155/why-value-types-are-stored-onto-stacks –

+0

可能的重複http://stackoverflow.com/questions/1113819/c-arrays-heap-and-stack -and-值類型 –

回答

2

與通用List<int>類型工作時,沒有拳擊是必要的。

1

如果它被存儲在一個類型列表

http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

它不盒裝「如果一個值類型用於類型T,編譯器生成的列表類的實現專門爲該值類型。這意味着一個List對象的list元素在使用該元素之前不必被裝箱,並且在約500個列表元素被創建之後,保存的不是裝箱列表元素的內存大於用於生成類實現的內存。 「

0

我知道列表T是一個類/引用類型/堆存儲類型 - 這是否意味着列表中的int被裝箱到堆上?

配售中存儲的int是在堆上分配是不一樣的拳擊該int

拳擊是當int單獨放置在它自己的object包裝。這不會發生在通用的List<int>中,但會發生在ArrayList中。

http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

相關問題