Frage

Angenommen, ich ein Klassenmodul clsMyClass mit einem Objekt als Member-Variable haben. Im Folgenden sind zwei komplette Implementierungen dieser sehr einfach Klasse.

Die Umsetzung 1:

Dim oObj As New clsObject

Implementierung 2:

Dim oObj As clsObject

Private Sub Class_Initialize()
    Set oObj = New clsObject
End Sub

Private Sub Class_Terminate()
    Set oObj = Nothing
End Sub

Gibt es einen funktionellen Unterschied zwischen diesen beide? Insbesondere ist die Lebensdauer von oObj gleich?

War es hilfreich?

Lösung

Bei der Implementierung 1 die clsObject nicht instanziert werden, bis es verwendet wird. Wenn es nie verwendet wird, dann wird das clsObject.Class_Initialize Ereignis nie ausgelöst.

Bei der Implementierung 2 wird die clsObject Instanz zur gleichen Zeit erstellt werden, die die clsMyClass instanziiert wird. Die clsObject.Class_Initialize wird immer dann ausgeführt werden, wenn clsMyClass erstellt wird.

Andere Tipps

Wenn bei der Umsetzung 1 die Erklärung innerhalb der Klasse und nicht die Unter, ja der Umfang ist das gleiche für beiden Beispiele.

Die Objektvariablen zerstört werden, wenn die Garbage Collection dort bestimmt nicht mehr Verweise auf das Objekt. So in Ihren beiden Beispielen ist der Umfang der clsObject unter der Annahme der gleichen, gibt es keinen Unterschied in der, wenn das Objekt zerstört wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top