Create Equals method based on Equals method from fields
Imports System
Class Rectangle
Private a, b As Point
Public Sub New(ByVal upLeftX As Integer, ByVal upLeftY As Integer, _
ByVal downRightX As Integer, ByVal downRightY As Integer)
Me.a = New Point(upLeftX, upLeftY)
Me.b = New Point(downRightX, downRightY)
End Sub 'New
Public Overrides Function Equals(ByVal obj As [Object]) As Boolean
If obj Is Nothing OrElse Not [GetType]().Equals(obj.GetType()) Then
Return False
End If
Dim r As Rectangle = CType(obj, Rectangle)
'Uses Equals to compare variables.
Return a.Equals(r.a) AndAlso b.Equals(r.b)
End Function 'Equals
Public Overrides Function GetHashCode() As Integer
Return a.GetHashCode() ^ b.GetHashCode()
End Function 'GetHashCode
End Class 'Rectangle
Class Point
Private x As Integer
Private y As Integer
Public Sub New(ByVal X As Integer, ByVal Y As Integer)
Me.x = X
Me.y = Y
End Sub 'New
Public Overrides Function Equals(ByVal obj As [Object]) As Boolean
If obj Is Nothing OrElse Not [GetType]().Equals(obj.GetType()) Then
Return False
End If
Dim p As Point = CType(obj, Point)
Return x = p.x AndAlso y = p.y
End Function 'Equals
Public Overrides Function GetHashCode() As Integer
Return x.GetHashCode() ^ y.GetHashCode()
End Function 'GetHashCode
End Class 'Point
Class [MyClass]
Public Shared Sub Main()
Dim r1 As New Rectangle(0, 0, 100, 200)
Dim r2 As New Rectangle(0, 0, 100, 200)
Dim r3 As New Rectangle(0, 0, 150, 200)
If r1.Equals(r2) Then
Console.WriteLine("Rectangle r1 equals rectangle r2!")
End If
If Not r2.Equals(r3) Then
Console.WriteLine("But rectangle r2 does not equal rectangle r3.")
End If
End Sub 'Main
End Class
Related examples in the same category