VB.Net Tutorial/Collections/IComparer

Материал из VB Эксперт
Версия от 12:53, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Implements IComparer

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
A, S
C, E
P, T
S, H
S, R

Use custom Comparer to compare objects

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
A, S
C, E
P, T
S, H
S, R