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?