假设我有一个类模块 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