Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When is this VB6 member variable destroyed?

Tags:

vb6

Suppose I have a class module clsMyClass with an object as a member variable. Listed below are two complete implementations of this very simple class.

Implementation 1:

Dim oObj As New clsObject

Implementation 2:

Dim oObj As clsObject

Private Sub Class_Initialize()
    Set oObj = New clsObject
End Sub

Private Sub Class_Terminate()
    Set oObj = Nothing
End Sub

Is there any functional difference between these two? In particular, is the lifetime of oObj the same?

like image 333
Matt Dillard Avatar asked Sep 17 '08 18:09

Matt Dillard


1 Answers

In implementation 1 the clsObject will not get instantiated until it is used. If it is never used, then the clsObject.Class_Initialize event will never fire.

In implementation 2, the clsObject instance will be created at the same time that the clsMyClass is instantiated. The clsObject.Class_Initialize will always be executed if clsMyClass is created.

like image 157
Darrel Miller Avatar answered Nov 03 '22 17:11

Darrel Miller