即使找到密钥,按键更新字典也会失败

时间:2013-01-21 13:25:26

标签: arrays vb.net collections dictionary

这没有任何意义

我有一系列数据词典,我试图创建另一个词典。

所以,我正在遍历各种东西并检查密钥,在适用的情况下更新密钥,但遇到了最棘手的问题

If completeDictionary.ContainsKey(sale("splitType1")) Then
    completeDictionary(sale("splitType1")) += (sale("splitPay1") - pxValues)
Else
    completeDictionary.Add(sale("splitType1"), (sale("splitPay1") - pxValues))
End If

此处我们正在检查completeDictionary中的密钥是否存在,名称为sale("splitType1"),如果密钥存在,则更新其值,如果不存在,则添加新值。

这应该可以正常工作,但它似乎找到了密钥但无法更新它,我收到此错误:

The given key was not present in the dictionary.

这是指行:

completeDictionary(sale("splitType1")) += (sale("splitPay1") - pxValues)

但是如果密钥不存在则不应该运行该行​​,因此它之前的If !!

completeDictionary是通过循环数组创建的:

Dim completeDictionary As New Generic.Dictionary(Of String, Double)
For Each Type as string In paymentTypes << paymentTypes is simply an array
    completeDictionary.Add(Type, 0.0)
Next

对这个令人沮丧的问题的任何帮助非常感谢!

1 个答案:

答案 0 :(得分:0)

您只检查splitType1,还访问splitPay1 - 这可能是缺少的条目:

completeDictionary(sale("splitType1")) += (sale("splitPay1") - pxValues)