Quando viene distrutta questa variabile membro VB6?
-
01-07-2019 - |
Domanda
Supponiamo di avere un modulo di classe clsMyClass
con un oggetto come variabile membro.Di seguito sono elencate due implementazioni complete di questa classe molto semplice.
Implementazione 1:
Dim oObj As New clsObject
Implementazione 2:
Dim oObj As clsObject
Private Sub Class_Initialize()
Set oObj = New clsObject
End Sub
Private Sub Class_Terminate()
Set oObj = Nothing
End Sub
C'è qualche differenza funzionale tra questi due?In particolare, è la vita di oObj
lo stesso?
Soluzione
Nell'implementazione 1 il clsObject non verrà istanziato finché non viene utilizzato.Se non viene mai utilizzato, l'evento clsObject.Class_Initialize non verrà mai attivato.
Nell'implementazione 2, l'istanza clsObject verrà creata contemporaneamente alla creazione di un'istanza di clsMyClass.clsObject.Class_Initialize verrà sempre eseguito se viene creato clsMyClass.
Altri suggerimenti
Se nell'implementazione 1 la dichiarazione è all'interno della classe e non in un sub, sì, l'ambito è lo stesso per entrambi gli esempi.
La variabile oggetto verrà distrutta ogni volta che la garbage collection determina che non ci sono più riferimenti a detto oggetto.Quindi nei tuoi due esempi, presupponendo che l'ambito di clsObject sia lo stesso, non c'è differenza nel momento in cui il tuo oggetto verrà distrutto.