gpt4 book ai didi

vba - 从集合和数组中删除的类会发生什么

转载 作者:行者123 更新时间:2023-12-04 21:55:30 25 4
gpt4 key购买 nike

我创建了一个类的多个实例 myClass ,并将它们存储在一个集合中。我想知道从集合中删除对象时内存中的对象会发生什么。 IE。

Sub createCollection()
Dim c As New Collection
Dim i As Long
For i = 1 To 5
c.Add New myClass
Next i
c.Remove(5) 'remove last item
End Sub

该类是否仍在内存中,是否将其从集合中完全删除,因为它没有在其他任何地方引用?改为使用公开声明的集合或使用不同的 Sub 删除项目(例如按下按钮)的效果(如果有)是什么?

数组呢:
Sub createCollection()
Dim a() As myClass
Redim a(1 To 5)
Dim i As Long
For i = 1 To 5
Set a(i) = New myClass
Next i
Redim Preserve a(1 To 4) 'remove last item
End Sub

最佳答案

在 OOP 对象中,当最后一个对它的引用被删除时,它会从内存中删除。因此,当没有对 ceratin 对象的引用时,它将在下一次垃圾收集时被删除。在您的情况下,您的数组是一个引用数组,而您创建它的方式,它们是唯一的引用。因此,如果您删除最后一项,您也会删除对该对象的最后一个引用。所以在下一次垃圾回收中,对象将从内存中删除。

关于vba - 从集合和数组中删除的类会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45648443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com