1

我正在尝试创建一个字典,每个键都是我创建的名称,每个项目都是一个包含三个对象的数组:一个字符串、一个整数和一个 SOAP 请求结果的数组。

我像这样初始化数组:

Dim riskDict As New Scripting.Dictionary
riskDict.Add "Weight", Array("WP", 0, Array())

我有一个函数“getTheRisk”,它返回一个 X x 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 请求的结果?

4

1 回答 1

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 保留。(而且它看起来不是很优雅。)但是,这个字典只有大约 8-10 个项目长,所以它不会对性能造成太大影响。

如果您有更好的解决方案,请随时发表评论或发布。

谢谢大家!

于 2015-12-29T16:43:50.210 回答