¿Cuándo se destruye esta variable miembro de VB6?
-
01-07-2019 - |
Pregunta
Supongamos que tengo un módulo de clase. clsMyClass
con un objeto como variable miembro.A continuación se enumeran dos implementaciones completas de esta clase muy simple.
Implementación 1:
Dim oObj As New clsObject
Implementación 2:
Dim oObj As clsObject
Private Sub Class_Initialize()
Set oObj = New clsObject
End Sub
Private Sub Class_Terminate()
Set oObj = Nothing
End Sub
¿Existe alguna diferencia funcional entre estos dos?En particular, ¿es la vida útil de oObj
¿lo mismo?
Solución
En la implementación 1, no se creará una instancia de clsObject hasta que se utilice.Si nunca se usa, el evento clsObject.Class_Initialize nunca se activará.
En la implementación 2, la instancia de clsObject se creará al mismo tiempo que se crea una instancia de clsMyClass.clsObject.Class_Initialize siempre se ejecutará si se crea clsMyClass.
Otros consejos
Si en la implementación 1 la declaración está dentro de la clase y no en un sub, sí, el alcance es el mismo para ambos ejemplos.
La variable del objeto será destruida cada vez que la recolección de basura determine que no hay más referencias a dicho objeto.Entonces, en sus dos ejemplos, suponiendo que el alcance de clsObject es el mismo, no hay diferencia en cuándo se destruirá su objeto.