题
假设我有一个类模块 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是相同的,没有任何差别当你的对象将被销毁。
不隶属于 StackOverflow