你可以使用整数数组作为唯一字典键吗?

时间:2013-11-01 18:34:28

标签: .net vb.net

我无法使用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

1 个答案:

答案 0 :(得分:5)

您需要使用接受自定义IEqualityComparer(Of T)的{​​{3}}作为密钥类型。

没有自定义constructor for Dictionary的数组不是有效的对象类型,而是字典(或其他基于散列的集合)的键。