2

在 VB6 应用程序中,我有一个Dictionary其键是Strings 和值是自定义类的实例。如果我调用RemoveAll()Dictionary它会首先释放自定义对象吗?还是我明确需要自己这样做?

Dim d as Scripting.Dictionary

d("a") = New clsCustom
d("b") = New clsCustom

' Are these two lines necessary?
Set d("a") = Nothing
Set d("b") = Nothing

d.RemoveAll
4

3 回答 3

4

是的,在Dictionary调用RemoveAll(). 从性能(如速度)的角度来看,我会说那些将变量设置为的行Nothing是不必要的,因为代码必须首先根据键名查找它们,而RemoveAll()将枚举并在一个循环中释放所有内容。

于 2008-09-16T17:54:06.490 回答
2

RemoveAll将从Dictionary: 键和值中删除所有关联。保留DictionaryDictionary.

于 2008-09-16T17:54:35.523 回答
0

如果没有其他变量引用集合中的项目,则应将这些对象交给垃圾收集器,以便在下次运行 GC 时进行清理。

例如,如果您在某处 sObj 是静态变量的情况下执行此操作,那么当系统下一次调用 GC 时,第一个对象将被清理,但仍被 sObj 引用的第二个对象不会。

d("a") = New clsCustom
d("b") = New clsCustom code.
sObj = d("b")

d.RemoveAll()
于 2008-09-16T17:58:02.800 回答