2012-11-04 111 views
1

我正在使用C#,並且在某些方法中,我使用了多個數據庫結果列表。這些可能非常大(每個約有1000個對象的10個列表)。 目前,我只是從這些方法返回並讓垃圾收集器清除它。如果在返回之前我寫TheList.Clear();這會有什麼好處?在退貨之前清零清單?

謝謝。

回答

5

因爲在列表上調用Clear不會導致數據垃圾回收,但只會將列表中的引用從對象中移除,所以不會帶來任何好處。

2

不,因爲您沒有將該列表複製到調用方法的調用者,您正在向該列表發送一個只存在於內存中一個位置的引用。如果清除列表,則會清除發送出該方法的列表,因爲它們是相同的。

如果我給你一個盒子,你用對象填充它,但是當你把盒子給我,你清空它,它將是空的。

+0

我使用10列表來組成一個新對象的列表。 – frenchie

+0

@frenchie:列表也是一個對象。對其他對象的引用列表。該列表在內存中佔用的空間不多,它內部的對象也是如此。 – LightStriker

1

不,因爲垃圾收集器會檢測到沒有對列表或其內容的引用,無論您是否已經這樣做,並且內存在垃圾收集器運行之前不會被回收。