문제

클래스 모듈이 있다고 가정합니다. 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에서는 clsMyClass가 인스턴스화되는 동시에 clsObject 인스턴스가 생성됩니다.clsMyClass가 생성되면 clsObject.Class_Initialize가 항상 실행됩니다.

다른 팁

구현 1에서 선언이 하위가 아닌 클래스 내부에 있는 경우 두 예제 모두 범위가 동일합니다.

가비지 수집에서 해당 개체에 대한 참조가 더 이상 없다고 판단될 때마다 개체 변수가 삭제됩니다.따라서 두 예제에서 clsObject의 범위가 동일하다고 가정하면 개체가 소멸되는 시점에는 차이가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top