泛型排序 (VB.NET)

泛型排序 (VB.NET)

Module _4_Generic_Demo

 

    Sub Main()

 

        Dim list As New List(Of Person)

 

        list.AddRange(New Person() {New Person("Ken", 36), New Person("Allen", 56), New Person("Mary", 28)})

 

        Print2(list)

 

        list.Sort()

 

        Print2(list)

 

        list.Sort(New NameComparer)

 

        Print2(list)



 

    End Sub

 

    Sub Print(ByVal list As List(Of Integer))

 

        For Each i As Integer In list

 

            Console.WriteLine(i)

 

        Next

 

        Console.WriteLine("--------------------------------------------------")

 

    End Sub

 

    Sub Print2(ByVal list As List(Of Person))

 

        For Each i As Person In list

 

            Console.WriteLine(i.Name & " : " & i.Age)

 

        Next

 

        Console.WriteLine("--------------------------------------------------")

 

    End Sub

 

End Module


 

Class Person

 

    'Implements IComparable

 

    Implements IComparable(Of Person)


 

    Public Name As String

 

    Public Age As Integer

 

    Sub New(ByVal n As String, ByVal a As Integer)

 

        Name = n

 

        Age = a

 

    End Sub

 

    'Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo

 

    'End Function

 

    Public Function CompareTo(ByVal other As Person) As Integer Implements System.IComparable(Of Person).CompareTo

 

        Return Age - other.Age

 

        'Return Name.CompareTo(other.Name)

 

    End Function

 

End Class

 

Class NameComparer

 

    'Implements IComparer

 

    Implements IComparer(Of Person)


 

    'Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare

 

    'End Function

 

    Public Function Compare(ByVal x As Person, ByVal y As Person) As Integer Implements System.Collections.Generic.IComparer(Of Person).Compare

 

        Return x.Name.CompareTo(y.Name)

 

    End Function

 

End Class


如有錯誤 歡迎指正