2011-12-15 62 views
0

我有2 list s,其中都保存相同類型的對象。我們稱之爲TypeX垃圾回收 - 期待什麼?

當我想補充的TypeX新對象我想創建的TypeX一個新的對象,然後使用Addlist1list2。因此每個列表都會有一個對實際對象的引用。 (我希望我就在這裏)。

然後,我想要刪除該對象。我爲list s使用Remove。因此,該對象的引用已被刪除...

但是對象本身會發生什麼? GC會清潔它嗎?我應該刪除它以某種方式嗎?

回答

3

簡單來說,在GC收集未通過任何其他對象引用的每個對象。

所以,如果你從兩個列表中刪除你的對象,並不保存在其他任何地方,它最終將被垃圾收集。

0

簡短的回答是肯定的,GC會清理它。但是,如果您希望使這種效率更高,我會將接口IDisposable添加到對象中,以便GC在所有引用都去除後儘快處理該對象。

http://msdn.microsoft.com/en-us/library/system.idisposable.aspx

+5

`IDisposable`與垃圾回收器無關。 – 2011-12-15 11:09:54

+0

只有在對象使用非託管資源(處理程序,流等)時,才應該實現IDisposable接口,並且在對象設置爲null(允許GC刪除它)之前,它必須關心將這些資源放大.CG集合只會刪除不再可到達的對象(有任何對它的引用) – 2011-12-15 11:18:51

0

只要該對象的唯一引用在這些列表中,GC就會在您將它從兩個列表中刪除後將其刪除。

0

大約有GC的好處是,你真的不必擔心您需要的資料,現在令人擔憂。