我正在尝试创建一个字典,每个键都是我创建的一个名称,每个项都是一个包含三个对象的数组:一个字符串、一个整数和一个SOAP请求结果数组。
我像这样初始化数组:
Dim riskDict As New Scripting.Dictionary
riskDict.Add "Weight", Array("WP", 0, Array())我有一个函数,'getTheRisk',它返回一个Xx4数组(它是一个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请求的结果?
发布于 2015-12-30 00:43:50
我找到了一种解决方法。我只用两个元素初始化项,然后redim,并在发送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保留。(而且它看起来并不是很优雅。)然而,这个字典只有8-10个条目,所以它不会对性能造成太大的影响。
如果您有任何更好的解决方案,请随时评论或张贴。
谢谢大家!
https://stackoverflow.com/questions/34514250
复制相似问题