所以我在这里使用了一些代码,我使用一个字典来填充两个不同的字典,这些字典作为自定义类中的属性保存。我这样做是为了提高效率。
注意:我通过为要设置的每个属性使用字典来解决此问题,但这并不太有效。
所以大致这是我的代码:
for iKey = 1 to class.maxnumber ' 8
dTempDict.add iKey, cdbl(24) ' enforce to 24 for calcs later
next iKey
Set class.dict1 = dTempDict ' commit to class.dict1
dTempDict.removeall 'wipe temp dictionary
for iKey = 1 to class.maxnumber ' 8
dTempDict.add iKey, "word" ' something other than 24 to test
next iKey
Set class.dict2 = dTempDict
所以上面的工作正常。然后我尝试循环并打印 class.dict1 的键没有问题。然后,当我尝试将值分配给预先声明的 dbl 时,我遇到了麻烦。然后我在不同的子传递类byref中循环遍历每个键:
dim dTempDict as scripting.dictionary
Set dTempDict = class.dict1
for each iKey in dTempDict
msgbox typename(dTempDict.Item(iKey))
next iKey
这带来了结果......“字符串”......令人困惑。然后我将我的值持有者更改为一个字符串并且它起作用了。我已经检查了类中的访问器,并且它们没有循环回错误的字典属性,因此看起来即使我将它们分配到第二个甚至执行了 .removeall,我的第二个字典的值也会填充到第一个字典中。
有任何想法吗?
如上所述,对 class.dict1 和 class.dict2 使用不同的临时字典,它们被正确分配,但这仍然令人困惑。