这个VB6成员变量何时被破坏?

时间:2008-09-17 18:54:07

标签: vb6

假设我有一个类模块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 个答案:

答案 0 :(得分:5)

在实现1中,clsObject在使用之前不会被实例化。如果从未使用过,那么clsObject.Class_Initialize事件将永远不会触发。

在实现2中,将在实例化clsMyClass的同时创建clsObject实例。如果创建clsMyClass,将始终执行clsObject.Class_Initialize。

答案 1 :(得分:0)

如果在实现1中,声明在类中而不是sub,则两个示例的范围相同。

答案 2 :(得分:0)

每当垃圾收集确定不再有对所述对象的引用时,将销毁对象变量。因此,在您的两个示例中,假设clsObject的范围相同,则对象的销毁时间没有区别。