我有两个list
,其中两个都保存相同类型的对象。我们称之为TypeX
。
当我想添加TypeX
的新对象时,我会创建一个TypeX
的新对象,然后使用Add
到list1
和{{1} }。因此,每个列表都将引用实际对象。
(我希望我就在这里)。
然后,我想删除该对象。我将list2
用于Remove
。因此,对象的引用已被删除......
但对象本身会发生什么? GC会清洁它吗?我应该以其他方式删除它吗?
答案 0 :(得分:3)
简单来说,GC会收集未被任何其他对象引用的每个对象。
因此,如果您从两个列表中删除对象并且不将其保存在其他任何位置,那么它最终将被垃圾收集。
答案 1 :(得分:0)
简短的回答是肯定的,GC会清理它。但是,如果您希望提高效率,我会将接口IDisposable添加到您的对象中,这样一旦所有引用都消失,GC就会干净地处理该对象。
http://msdn.microsoft.com/en-us/library/system.idisposable.aspx
答案 2 :(得分:0)
只要对象的唯一引用位于这些列表中,GC就会在您从两个列表中删除它后将其删除。
答案 3 :(得分:0)
如果没有对该对象的引用,GC将在必要时收集该对象。这通常发生在内存压力增加或手动给它“提示”运行时(通常不需要)。
此链接可能会有所帮助:http://msdn.microsoft.com/en-us/library/ms973837.aspx
答案 4 :(得分:0)
拥有GC的好处在于你真的不需要担心你现在担心的事情。