2

我在使用 Visual Basic Integer() 作为字典的键时遇到问题。我遇到了一个问题,即使我将 ContainsKey() 传递给与现有键具有相同值的数组,它也会返回 false。我认为这可能是因为 ContainKey() 检查内存中的对象是否相同,而不是它们是否相等。正确的?我有以下代码结构:

Dim RGB(3) As Integer
Dim dic as Dictonary(Of Integer(), Double())

...
...

If dic.ContainsKey(RGB) Then 'This never returns true
            meritValue = (MerirtLookUpAVG(RGB)(0) * MerirtLookUpAVG(RGB)(1) + meritValue) / MerirtLookUpAVG(RGB)(0) + 1
      MerirtLookUpAVG(RGB)(0) += 1
      MerirtLookUpAVG(RGB)(1) = meritValue
Else
  MeirtLookUpAVG.Add(RGB, {1, meritValue} 
EndIf
4

1 回答 1

5

您需要使用Dictionary 的构造函数,它接受IEqualityComparer(Of T)您的键类型的自定义。

没有 custom 的数组IEqualityComparer(Of T)作为字典(或其他基于散列的集合)的键是无效的对象类型。

于 2013-11-01T18:36:03.497 回答