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

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

===============>>#1 票数:4 已采纳

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

===============>>#2 票数:2

RemoveAll将从Dictionary删除所有关联:键和值。 对于Dictionary保留对Dictionary值的引用将是一个参考泄漏。

===============>>#3 票数:0

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

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

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

d.RemoveAll()

  ask by Matt Dillard translate from so

未解决问题?本站智能推荐:

3回复

使用RemoveAll()发布嵌套的Scripting.Dictionary

我在这里找到的主题可以回答所寻找内容的一半: Scripting.Dictionary的RemoveAll()方法是否首先释放其所有元素? 就我而言,值是Dictionary的实例,因此我具有Dictionary对象的嵌套层次结构。 我的问题是是否需要在每个子词典上调用RemoveA
1回复

如何从内存中释放在VB6应用程序中调用的.Net DLL?

我有一个旧的VB6项目,我在其中创建了.Net库。 我仍然处于此dll的单元测试阶段,所以问题是每次我更新dll并让运行中的VB6应用程序识别它时,我被迫关闭该应用程序,以将新的dll版本替换为新的一。 因此,我认为该dll在首次调用时正在加载到内存中,直到我退出调用它的应用程序时才被释放。
2回复

保存大量字符的最佳方法

我需要保存a lot字符,然后,在保存所有信息之后,我将使用Print 我试图将一个类用作csStringBuilder但该错误仍在发生。 这是我尝试做的: Obs:我知道这离一个好的编程很遥远,但是我尝试过... 我正在执行此操作,直到strCurrentlyData10
1回复

一旦本地对象超出范围,是否会对其进行垃圾回收?

说我有一个功能 我的直觉告诉我,一旦函数退出, o将被设置为Nothing (因此将被垃圾回收),但是我找不到任何文档来确认或反驳。
1回复

通过循环反复检查整个脚本字典是不好的做法吗? VB6

我有一个循环,用于检查值,如果不存在则将其添加到字典中。 此检查发生在循环内,因此会重复发生。 随着字典的增长,我想象每张支票的成本都会增加一个内部循环。 为了加快我的整个例程的速度,我想知道这是否应该优化? 如果是这样,怎么办?
2回复

VB6 Dictionary此键已与此集合的元素相关联

这可能听起来有点奇怪,但在这里: 我的表单遍历每个客户(+ -10 000)并打开记录集以进行上次访问。 由于优化不佳,我决定进行一次查询,我需要存储它以便于访问。 我决定拿一本字典,因为与数组不同,我将能够使用键字符串(客户端号码)进行搜索并获取我的项目(字符串:客户端的最后一次
9回复

VBA有词典结构吗?

VBA有字典结构吗? 像键<>值数组?
1回复

C#中使用的COM互操作词典

我有一个第三方DLL我需要从我的C#程序调用。 我已将dll添加到项目中的引用中,VS2010生成了一个COM - interop包装器DLL。 DLL中定义的接口和类现在可以在我的程序中使用并按预期工作。 现在问题是返回由整数和TSEnt对象的键值对组成的“字典”的方法。 在D
2回复

在字典数组中搜索布尔值

我有这样的结构 我需要知道每个字典中存在的键“ active”是否至少设置为true一次。 有没有办法将其归档而不循环? 就像是 目前,我正在循环播放,但是应用程序是15年前编写的,并且每个记录中都有更多的记录和更多的字典键,因此循环开始要花更多的时间而不是明智的等待。
2回复

通过VB6字典迭代

我是一个非VB6的人,不幸遗传了一个有缺陷的传统VB6 / Classic ASP项目。 有一个部分,很多条目被放入一个Dictionary ,我希望看到它包含的所有条目。 我试过这个( oParams是一个字典): 返回的是: Object不支持此属性或方法:438