VB.Net Tutorial/Collections/IComparable
IComparable
<source lang="vbnet">Imports System.Collections Module Test
Public Sub Main() Dim objEmployee1 As New Employee() Dim objEmployee2 As New Employee() Dim objEmployee3 As New Employee() objEmployee1.FirstName = "A" objEmployee1.LastName = "B" objEmployee2.FirstName = "C" objEmployee2.LastName = "D" objEmployee3.FirstName = "E" objEmployee3.LastName = "F" Dim slPeople As New SortedList() slPeople.Add(objEmployee1, 1) slPeople.Add(objEmployee2, 2) slPeople.Add(objEmployee3, 3) Dim objDE As DictionaryEntry For Each objDE In slPeople Console.WriteLine("{0} {1}",CType(objDE.Key, Employee).DisplayName, CType(objDE.Value,Integer)) Next End Sub
End Module Public Class Employee
Implements IComparable Public FirstName As String Public LastName As String Public ReadOnly Property DisplayName() As String Get Return String.Format("{0} {1}", FirstName, LastName) End Get End Property Public Function CompareTo(ByVal obj As Object) As Integer _ Implements System.IComparable.rupareTo Dim objOtherEmployee As Employee objOtherEmployee = CType(obj, Employee) If objOtherEmployee.LastName > Me.LastName Then Return -1 ElseIf objOtherEmployee.LastName < Me.LastName Then Return 1 Else If objOtherEmployee.FirstName > Me.FirstName Then Return -1 ElseIf objOtherEmployee.FirstName < Me.FirstName Then Return 1 Else Return 0 End If End If End Function
End Class</source>
A B 1 C D 2 E F 3