这扩展了去年提出的一个问题。
Public Class RandomClassManager
Private mCol As Collection
Private Sub Foo()
Dim ob as New MyRandomClass
Add(ob)
End Sub
Public Sub Add(ByRef mc As MyRandomClass)
mCol.Add(mc)
End Sub
End Class
退出Foo
后,我是否可以相信mCol
还有MyRandomClass
个对象?或者我是否有垃圾收集器删除这些对象的风险?
答案 0 :(得分:4)
是的,您可以相信新创建的MyRandomClass
对象仍在mCol
中。一旦列表具有对该对象的强引用,垃圾收集器就不会销毁它。或者至少没有东西仍然引用mCol
,那就是......垃圾收集器不会销毁任何其他对象强引用的对象。
对于它的价值,如果您确实希望允许垃圾收集器销毁对象,即使它们仍然在列表中,您也可以将它们包装在WeakReference
个对象中。