我正在尝试创建一个字典,每个键都是我创建的名称,每个项目都是三个对象的数组:一个字符串,一个整数,以及一个SOAP请求结果的数组。
我像这样初始化数组:
Dim riskDict As New Scripting.Dictionary
riskDict.Add "Weight", Array("WP", 0, Array())
我有一个函数,' getTheRisk',它返回一个X by 4数组(它是一个SOAP请求。我不知道将返回多少结果,但它将返回四个值每个结果。)
我想将结果存储到字典中项目的第三个元素中,尝试如下:
For i = 0 To riskDict.count - 1
riskDict.Items(i)(2) = getTheRisk(myDate.Value, myPort.Value, riskDict.Items(i)(0))
Next i
这编译并运行得很好,但在分配数组后,它在字典中显示为空:
getTheRisk函数返回如下内容:
如何将dict中的数组设置为SOAP请求的结果?
答案 0 :(得分:0)
我找到了解决方法。我只使用两个元素初始化项目,然后在发送SOAP请求并获取结果时重新开始并添加第三个元素。我初始化如下:
Dim riskDict As New Scripting.Dictionary
riskDict.Add "Weight", Array("WP", 0)
对于我的循环:
For Each key In riskDict
temp = riskDict(key)
ReDim Preserve temp(UBound(temp) + 1)
temp(UBound(temp)) = getTheRisk(myDate.Value, myPort.Value, riskDict(key)(0))
riskDict(key) = temp
Next key
这不太理想,因为redim保留。 (而且它看起来并不优雅。)但是,这个dict只有8-10个项目,所以它不应该造成太多的性能损失。
如果您有更好的解决方案,请随时发表评论或发布。
全部谢谢!