这是对去年提出的一个问题的扩展。
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
对象吗?或者我是否面临垃圾收集器删除这些对象的风险?
最佳答案
是的,您可以相信新创建的 MyRandomClass
对象仍在 mCol
中。一旦列表对该对象具有强引用,垃圾收集器就不会销毁它。或者至少只要某些东西仍然引用 mCol
,也就是说...垃圾收集器不会销毁任何被任何其他对象强引用的对象。
就其值(value)而言,如果您确实想让垃圾收集器销毁对象,即使它们仍在列表中,您可以将它们包装在 WeakReference
中。对象。
关于VB.Net 对象超出范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30266187/