:master: Questo mi pare un poco meglio
anche se non sono ancora contento.
cs.Add(c, c) forse è meglio trasformarlo in cs.add(c), dato che sono uguali
forse si può fare con una List(of classe) utilizzando un altro aproccio
Comunque, grazie ancora dell'aiuto
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)
Dim cs As New Classi()
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
End Class
Public Class Classi
Inherits Dictionary(Of Classe, Classe)
Public Sub New()
MyBase.New(New EqualityComparer())
End Sub
Private 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
End Class