:master: Ammettendo di non aver fatto pasticci, ho fatto questo esempio :master:
codice:
Imports System.Collections
Imports Microsoft.VisualBasic.FileIO
Imports System.Collections.Generic
Imports System.Collections.Specialized
Module Module1
Sub Main()
Dim cs As New Dictionary(Of Classe, Classe)(Classe.EqualityComparer)
Try
Dim c As Classe = Nothing
c = New Classe("a", "a") : cs.Add(c, c)
c = New Classe("b", "a") : cs.Add(c, c)
c = New Classe("B", "x") : cs.Add(c, c) 'non posso farlo
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Sub
End Module
Public Class Classe
Public A As String
Public B As String
Public Sub New(ByVal a As String, ByVal b As String)
Me.A = a
Me.B = b
End Sub
Public Class _EqualityComparer
Implements IEqualityComparer(Of Classe)
Public Function Equals1(ByVal x As Classe, ByVal y As Classe) As Boolean Implements System.Collections.Generic.IEqualityComparer(Of Classe).Equals
Return String.Equals(x.A, y.A, StringComparison.OrdinalIgnoreCase)
End Function
Public Function GetHashCode1(ByVal obj As Classe) As Integer Implements System.Collections.Generic.IEqualityComparer(Of Classe).GetHashCode
Return obj.A.ToLower.GetHashCode
End Function
End Class
Public Shared ReadOnly EqualityComparer As New _EqualityComparer()
End Class