代码之家  ›  专栏  ›  技术社区  ›  Matt Dillard

何时销毁该vb6成员变量?

vb6
  •  8
  • Matt Dillard  · 技术社区  · 16 年前

    假设我有一个班级模块 clsMyClass 对象作为成员变量。下面列出了这个非常简单的类的两个完整实现。

    实施1:

    Dim oObj As New clsObject
    

    实施2:

    Dim oObj As clsObject
    
    Private Sub Class_Initialize()
        Set oObj = New clsObject
    End Sub
    
    Private Sub Class_Terminate()
        Set oObj = Nothing
    End Sub
    

    这两者有什么功能上的区别吗?特别是,生命的 oObj 相同的?

    3 回复  |  直到 16 年前
        1
  •  5
  •   Darrel Miller    16 年前

    在实现1中,直到使用clsObject,它才会被实例化。如果从未使用过,则clsObject.class_initialize事件将永远不会激发。

    在实现2中,将在实例化clsmyClass的同时创建clsObject实例。如果创建了clsmyclass,则始终执行clsObject.class_initialize。

        2
  •  0
  •   Mitchel Sellers    16 年前

    如果在实现1中,声明在类中而不是Sub中,那么两个示例的作用域是相同的。

        3
  •  0
  •   Rick    16 年前

    只要垃圾收集确定不再有对该对象的引用,就会销毁对象变量。因此,在您的两个示例中,假设clsObject的作用域相同,那么在销毁对象的时间上没有区别。