VB.Net Tutorial/Collections/IComparer

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

Implements IComparer

<source lang="vbnet">Imports System.Collections public class Test

  public Shared Sub Main
       Dim emps(4) As Employee
       emps(0) = New Employee("R", "S")
       emps(1) = New Employee("S", "A")
       emps(2) = New Employee("T", "P")
       emps(3) = New Employee("H", "S")
       emps(4) = New Employee("E", "C")
       Dim emp_comparer As New EmployeeComparer
       Array.Sort(emps, emp_comparer)
       For i As Integer = 0 To emps.GetUpperBound(0)
           Console.WriteLine(emps(i).ToString())
       Next i
  End Sub
  

End class Public Class Employee

   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 EmployeeComparer

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

End Class</source>

A, S
C, E
P, T
S, H
S, R

Use custom Comparer to compare objects

<source lang="vbnet">Imports System.Collections public class Test

  public Shared Sub Main
       Dim emps(4) As Employee
       emps(0) = New Employee("R", "S")
       emps(1) = New Employee("S", "A")
       emps(2) = New Employee("T", "P")
       emps(3) = New Employee("H", "S")
       emps(4) = New Employee("E", "C")
       Dim emp_comparer As New EmployeeComparer
       Array.Sort(emps, emp_comparer)
       For i As Integer = 0 To emps.GetUpperBound(0)
           Console.WriteLine(emps(i).ToString())
       Next i
  End Sub
  

End class Public Class Employee

   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 EmployeeComparer

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

End Class</source>

A, S
C, E
P, T
S, H
S, R