Imports System
Imports System.Collections.Generic
Class Example
Public Shared Sub Main()
Try
Dim boxEqC As New BoxEqualityComparer()
Dim boxes As Dictionary(Of Box, [String]) = _
New Dictionary(Of Box, String)(boxEqC)
Dim redBox As New Box(4, 3, 4)
Dim blueBox As New Box(4, 3, 4)
boxes.Add(redBox, "red")
boxes.Add(blueBox, "blue")
Catch argEx As ArgumentException
Console.WriteLine(argEx.Message)
End Try
End Sub
End Class
Public Class Box
Public Sub New(ByVal h As Integer, ByVal l As Integer, _
ByVal w As Integer)
Me.Height = h
Me.Length = l
Me.Width = w
End Sub
Private _Height As Integer
Public Property Height() As Integer
Get
Return _Height
End Get
Set(ByVal value As Integer)
_Height = value
End Set
End Property
Private _Length As Integer
Public Property Length() As Integer
Get
Return _Length
End Get
Set(ByVal value As Integer)
_Length = value
End Set
End Property
Private _Width As Integer
Public Property Width() As Integer
Get
Return _Width
End Get
Set(ByVal value As Integer)
_Width = value
End Set
End Property
End Class
Class BoxEqualityComparer
Implements IEqualityComparer(Of Box)
Public Overloads Function Equals(ByVal b1 As Box, ByVal b2 As Box) _
As Boolean Implements IEqualityComparer(Of Box).Equals
If b1.Height = b2.Height And b1.Length = _
b2.Length And b1.Width = b2.Width Then
Return True
Else
Return False
End If
End Function
Public Overloads Function GetHashCode(ByVal bx As Box) _
As Integer Implements IEqualityComparer(Of Box).GetHashCode
Dim hCode As Integer = bx.Height Xor bx.Length Xor bx.Width
Return hCode.GetHashCode()
End Function
End Class