У меня есть теоретический класс Name_Order, в котором есть строка Name
и int Order
.
Мне нужно указать, что два Name_Order
различны, если пара NameOrder отличаетсято есть или имя или порядок отличаются.
Теперь переопределение равно 10000 * без проблем , но у меня есть некоторые "проблемы" с GetHashCode:
Public Class Name_Order
Public Property Name As String
Public Property Order As Integer
Public Overrides Function Equals(ByVal obj As Object) As Boolean
If TypeOf obj Is Name_Order Then
Dim no = DirectCast(obj, Name_Order)
Return Me.Name = no.Name AndAlso Me.Order = no.Order
Else
Return MyBase.Equals(obj)
End If
End Function
Public Overrides Function GetHashCode() As Integer
Dim hcName = 0
If Me.Name IsNot Nothing Then
hcName = Me.Name.GetHashCode
End If
Dim hcOrder = Me.Order.GetHashCode
Return hcName + hcOrder
End Function
End Class
Вв этом случае, суммируя хеш-коды, оставляют (небольшую, но реальную) вероятность того, что два разных Name_Order с разными именами или порядками будут «идентичны».
Скажем, добавление 7
+ 154
дает одинаковоерезультат как добавление 154
+ 7
...
Альтернативное переопределение этого метода?