【发布时间】:2009-06-17 11:15:52
【问题描述】:
我正在尝试实现一个简单的 IEqulityComparer 以与 LINQ 集合一起使用。为了讨论的目的,我编写了以下代码,将其简化为最简单的形式...
Public Structure bob
Dim SiteID As Integer
Dim fred As String
End Structure
Public Class insCompare
Implements System.Collections.Generic.IEqualityComparer(Of bob)
Public Function Equals(ByVal x As bob, ByVal y As bob) As Boolean
Return IIf(x.SiteID = y.SiteID, True, False)
End Function
Public Function GetHashCode(ByVal x As bob) As Integer
Return x.SiteID.GetHashCode()
End Function
End Class
我遇到的问题是这两个函数都会抛出编译器警告“函数'getHashCode'(或'Equals')在基类'Object'中隐藏了一个可覆盖的方法。要覆盖基类方法,这个方法必须是声明为“覆盖”。”
但是,如果我将它们声明为 Overrides,我会收到错误“函数 'GetHashCode' 不能被声明为 Overrides,因为它没有覆盖基类中的函数。”!!
我还在“Implements”行收到编译器错误,大意是我必须实现“getHashCode”,但我认为这是第一个问题的结果。
我所有的研究都表明我应该没事 - 请问有人有任何线索吗?
【问题讨论】:
标签: vb.net linq compiler-warnings iequalitycomparer