衆所周知,struct
是value type,因此被分配到堆棧上(除了特殊情況下,例如它在類中被裝箱)。結構與參考成員:堆或堆棧?
但是讓我們考慮這個struct
:
public struct TestStruct
{
public List<int> items;
}
internal class Program
{
private static void Main(string[] args)
{
TestStruct g;
}
}
我們TestStruct
g
不是類的成員,但在Main
函數宣佈「獨立」的變量。它符合stack
分配變量的要求。
不過,如果我寫:
g.items = new List<int>();
- 我想
items
是在heap
分配的,不是嗎?g
「去」heap
以及? items
當g
超出範圍時(GC
必須爲items
完成工作)會發生什麼?- 如果不是
List<int>
,我們有一個 類型的變量實現IDisposable
,那麼最好的做法是什麼?
PS:我知道在這種情況下可以(應該)使用class
而不是struct
。我只是被這個具體案例搞糊塗了。
回覆3:我認爲這是含有類/結構'IDisposable'成員也應該是'IDisposable'自己微軟指引的地方 - 這樣你可以清理在'Dispose'中放置一次性成員。 –
第一個子問題在[C#中的struct中的引用類型](http://stackoverflow.com/q/22769497/395760)中也有答案。 – delnan
這個人解釋得很好:http://www.youtube.com/playlist?list=PLRwVmtr-pp07XP8UBiUJ0cyORVCmCgkdA –