Когда эта переменная-член VB6 будет уничтожена?

StackOverflow https://stackoverflow.com/questions/86365

  •  01-07-2019
  •  | 
  •  

Вопрос

Предположим, у меня есть класс module clsMyClass с объектом в качестве переменной-члена.Ниже перечислены две полные реализации этого очень простого класса.

Реализация 1:

Dim oObj As New clsObject

Реализация 2:

Dim oObj As clsObject

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

Private Sub Class_Terminate()
    Set oObj = Nothing
End Sub

Есть ли какая-либо функциональная разница между этими двумя?В частности, это срок службы oObj то же самое?

Это было полезно?

Решение

В реализации 1 экземпляр clsObject не будет создан до тех пор, пока он не будет использован.Если оно никогда не используется, то событие clsObject.Class_Initialize никогда не сработает.

В реализации 2 экземпляр clsObject будет создан одновременно с созданием экземпляра clsMyClass.clsObject.Class_Initialize всегда будет выполняться, если создан clsMyClass.

Другие советы

Если в реализации 1 объявление находится внутри класса, а не в подразделе, да, область видимости одинакова для обоих примеров.

Объектная переменная будет уничтожена всякий раз, когда сборка мусора определит, что ссылок на указанный объект больше нет.Итак, в ваших двух примерах, предполагая, что область действия clsObject одинакова, нет никакой разницы в том, когда ваш объект будет уничтожен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top