What is the reason for not instantiating an object at the time of declaration?

vb6

Solution

There may be other reasons but in VB6 using the New keyword when you Dim an object can cause unexpected results because VB will instantiate the object whenever it is referenced.

Dim objMyObject as New SomeObject

Set objMyObject = Nothing   ' the object is nothing

If objMyObject Is Nothing Then  ' referencing the object instantiates again
   MsgBox "My object is destroyed"  ' what you would probably expect
Else
   MsgBox "My object still exists"
End If

Problem

I had to delve into some VB6 code recently and I saw this pattern all over the place: ``` dim o as obj set o = new obj ``` Why not this? ``` dim o as new obj ``` I remember from 15 years ago that there was a good reason for this, but I can't remember what it was now. Anyone remember? Is the reason still valid?

Original source