3.939 messaggi dal 28 gennaio 2003
Data una classe vorrei renderla ordinabile implementando l'interfaccia IComparable. Il problema è che deve essere ordinabile su tre campi, stringa, numero e data. Ho provato il codice di sotto ma non so se vada bene.

Private Class TestData1
  Implements IComparable(Of TestData1)

  Public Property Stringa() As String
  Public Property Numero() As Integer
  Public Property Data() As DateTime

  Public Property Nome As String

  Public Function CompareTo(other As TestData1) As Integer Implements System.IComparable(Of TestData1).CompareTo
    If other Is Nothing Then Return 1

    Dim result As Integer = String.Compare(Me.Stringa, other.Stringa)

    If result <> 0 Then
      Return result
    Else
      result = Math.Sign(Me.Numero - other.Numero)
      If result <> 0 Then
        Return result
      Else
        Return DateTime.Compare(Me.Data, other.Data)
      End If
    End If

  End Function
End Class
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Pietro,
sembra ok, ti dà il risultato voluto? Hai scelto di dare la priorità al valore delle stringhe e poi, se fossero uguali per i due oggetti, di comparare il numero e poi la data.

Scrivi qualche unit test per verificare che si comporti nella maniera prevista in base all'input fornito.

ciao,
Moreno

Enjoy learning and just keep making
3.939 messaggi dal 28 gennaio 2003
il "sembra", detto da te, basta e avanza!

ti ringrazio

ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.