我有一个字典,其键是 Excel Range 对象(不,这是不可协商的),定义如下(CellProp 类型是一个包含各种单元格属性的对象):
Dim dic As New Dictionary(Of Excel.Range, CellProp)(New RangeComparer())
因为键是对象,所以我需要重载 Equals/GetHashCode 函数。我目前的实现如下:
Class RangeComparer
Implements IEqualityComparer(Of Excel.Range)
Public Overloads Function Equals(ByVal x As Excel.Range, ByVal y As Excel.Range) As Boolean Implements IEqualityComparer(Of Excel.Range).Equals
If x.Address(External:=True) = y.Address(External:=True) Then
Return True
Else
Return False
End If
End Function
Public Overloads Function GetHashCode(ByVal obj As Excel.Range) As Integer Implements IEqualityComparer(Of Excel.Range).GetHashCode
Return obj.Count.GetHashCode
End Function
End Class
但是,当一次将许多单元格(即数百个)添加到字典时,执行起来可能会很慢。最重要的是,有没有更快的方法来做到这一点?其次,为什么获取 Range 的 Count 属性的哈希码似乎有效(尽管速度很慢)?