: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