VB.Net/Data Structure/IComparer

Материал из VB Эксперт
Перейти к: навигация, поиск

IComparer Demo: custom sorting

<source lang="vbnet"> Imports System Imports System.Collections Public Class MainClass

   Shared Sub Main(ByVal args As String())
       Dim students(4) As Student
       students(0) = New Student("A", "E")
       students(1) = New Student("B", "D")
       students(2) = New Student("C", "C")
       students(3) = New Student("D", "B")
       students(4) = New Student("E", "A")
       " Make a comparer.
       Dim student_comparer As New StudentComparer
       " Sort.
       Array.Sort(students, student_comparer)
       " Display the results.
       Dim txt As String = ""
       For i As Integer = 0 To students.GetUpperBound(0)
           Console.WriteLine( students(i).ToString() )
       Next i
   End Sub

End Class

Public Class Student

   Public FirstName As String
   Public LastName As String
   Public Sub New(ByVal first_name As String, ByVal last_name As String)
       FirstName = first_name
       LastName = last_name
   End Sub
   Public Overrides Function ToString() As String
       Return LastName & ", " & FirstName
   End Function

End Class Public Class StudentComparer

   Implements IComparer
   Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
    Implements System.Collections.IComparer.rupare
       Dim student1 As Student = DirectCast(x, Student)
       Dim student2 As Student = DirectCast(y, Student)
       Return String.rupare(student1.ToString, student2.ToString)
   End Function

End Class

      </source>