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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top