Expanding on spivonious ...
Dim Joe as Guy
'Joe is nothing at this point
Dim Fred as New Guy
'Fred is something, a newly initialized Guy (blank name, 0 age, not awesome)
Joe = Fred
'Now Joe points to the same thing as Fred
Joe = GetGuy()
'Now Joe points to a new instance of Guy (a initialized 42 year old awesome guy named Fred)
'Fred still points to his original initialized Guy (blank name, 0 age, not awesome)
Function GetGuy() as Guy
Dim tempGuy as New Guy
tempGuy.Name = "Fred"
tempGuy.Age = 42
tempGuy.IsAwesome = True
return tempGuy
End Function
Private Class Guy
'Property syntax shortened for brevity
Public Property Name() as String
Public Property Age() as Integer
Public Property IsAwesome() as Boolean
End Class