该VB6成员变量何时被销毁?
时间:2020-03-05 18:59:40 来源:igfitidea点击:
假设我有一个类模块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
两者之间在功能上有什么区别吗?特别是oBj的生存期是否相同?
解决方案
回答
如果在实现1中,声明位于类内而不是子类内,则对两个示例,范围都相同。
回答
每当垃圾回收确定不再有对该对象的引用时,该对象变量将被销毁。因此,在两个示例中,假设clsObject的范围相同,则销毁对象的时间没有区别。
回答
在实现1中,除非使用clsObject,否则不会对其进行实例化。如果从不使用它,则永远不会触发clsObject.Class_Initialize事件。
在实现2中,将在实例化clsMyClass的同时创建clsObject实例。如果创建了clsMyClass,则将始终执行clsObject.Class_Initialize。