Avatar of Thomasian
Thomasian
Flag for Philippines

asked on 

IEqualityComparer - GetHashCode

I am trying to create an IEqualityComparer class which compares 2 fields of a class. The code below works but I'm not sure what to put on the GetHashCode function. I found that it is not using the function when I used the Contains function of the List collection. What exactly is the use of the GetHashCode function?
Module Module1
 
    Sub Main()
        Dim EmployeeList As New List(Of Employee)
 
        Dim Employee1 As New Employee
        Dim Employee2 As New Employee
 
        Employee1.ID = 1
        Employee1.Name = "James"
        Employee2.ID = 2
        Employee2.Name = "james"
 
        EmployeeList.Add(Employee1)
 
        Console.WriteLine(EmployeeList.Contains(Employee2, New Employee.EqualityEmployee))
 
        Console.ReadKey()
    End Sub
 
    Public Class Employee
        Public ID As Int16
        Public Name As String
 
        Public Class EqualityEmployee
            Implements IEqualityComparer(Of Employee)
 
            Public Function Equals1(ByVal x As Employee, ByVal y As Employee) As Boolean Implements System.Collections.Generic.IEqualityComparer(Of Employee).Equals
                Return x.ID.Equals(y.ID) OrElse String.Equals(x.Name, y.Name, StringComparison.CurrentCultureIgnoreCase)
            End Function
 
            Public Function GetHashCode1(ByVal obj As Employee) As Integer Implements System.Collections.Generic.IEqualityComparer(Of Employee).GetHashCode
                Return obj.GetHashCode
            End Function
        End Class
    End Class
 
End Module

Open in new window

.NET ProgrammingEditors IDEsVisual Basic.NET

Avatar of undefined
Last Comment
Thomasian

8/22/2022 - Mon