문제
클래스 모듈이 있다고 가정합니다. 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의 범위가 동일하다고 가정하면 개체가 소멸되는 시점에는 차이가 없습니다.
제휴하지 않습니다 StackOverflow