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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top