VB.Net 对象超出范围?

标签 vb.net

这是对去年提出的一个问题的扩展。

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/

相关文章:

vb.net - Integer.Parse 与 CInt

c# - 将系统默认上下文菜单添加到无边框 Windows 窗体

c# - 获取特定 linq to sql 表的名称

regex - 捕获特定子字符串的最佳方法?

asp.net - 如何将 div 的 ClientID 插入到 OnClientClick 事件中

vb.net - 将对象转换为整数的最佳方法

c# - .NET 能否在运行时进行解析和评估

.net - 创建泛型类型的泛型列表

.net - vb.net如果是简写

vb.net - 将字符串转换为日期时间格式