VB.Net/Data Structure/IComparable

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

Array Sort Object who implements the IComparable

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

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

End Class

Public Class Student

   Implements IComparable
   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
   Public Function CompareTo(ByVal obj As Object) As Integer _
    Implements System.IComparable.rupareTo
       Dim other_Student As Student = DirectCast(obj, Student)
       Return String.rupare(Me.ToString, other_Student.ToString)
   End Function

End Class

      </source>


Binary SearchObject who implements the IComparable

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

   Shared Sub Main(ByVal args As String())
       Dim student(4) As Student
       student(0) = New Student("A", "A")
       student(1) = New Student("B", "A")
       student(2) = New Student("C", "B")
       student(3) = New Student("D", "B")
       student(4) = New Student("E", "C")
       " Sort.
       Array.Sort(student)
       " Find E C
       Dim target_student As New Student("E", "C")
       Dim target_index As Integer = Array.BinarySearch(student, target_student)
       target_student = student(target_index)
       Console.WriteLine(target_student.ToString)
   End Sub

End Class

Public Class Student

   Implements IComparable
   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
   Public Function CompareTo(ByVal obj As Object) As Integer _
    Implements System.IComparable.rupareTo
       Dim other_Student As Student = DirectCast(obj, Student)
       Return String.rupare(Me.ToString, other_Student.ToString)
   End Function

End Class

      </source>