VB.Net by API/System.Collections/IComparer

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

Implements IComparer

<source lang="vbnet"> Imports System Imports System.Collections

Public Class MainClass

 Shared Sub Main()
   Dim e1 As New Employee("E1", 50000)
   Dim e2 As New Employee("E2", 60000)
   Dim e3 As New Employee("E3", 20000)
   Dim e4 As New Employee("E4", 1)
   Dim theEmployees() As Employee = {e1, e2, e3, e4}
   
   Array.Sort(theEmployees)
   
   Console.WriteLine("Sort by Salary")
   
   Dim SortingByName As SortByName = New SortByName()
   Dim aEmployee As Employee
   For Each aEmployee In theEmployees
     Console.WriteLine(aEmployee.TheName & " has yearly salary $" & FormatNumber(aEmployee.Salary))
   Next
   Console.WriteLine("Sort by Name")
   Array.Sort(theEmployees, SortingByName)
   
   
   For Each aEmployee In theEmployees
     Console.WriteLine(aEmployee.TheName & " has yearly salary $" & FormatNumber(aEmployee.Salary))
   Next
 End Sub

End Class

Public Class SortByName

 Implements IComparer
 Public Function CompareTo(ByVal firstEmp As Object, ByVal _
 secondEmp As Object) As Integer Implements IComparer.rupare
   Dim temp1 As Employee = CType(firstEmp, Employee)
   Dim temp2 As Employee = CType(secondEmp, Employee)
   Return String.rupare(temp1.TheName, temp2.TheName)
 End Function

End Class Public Class Employee

 Implements IComparable
 Private m_Name As String
 Private m_Salary As Decimal
 Public Sub New(ByVal theName As String, ByVal curSalary As Decimal)
   m_Name = theName
   m_Salary = curSalary
 End Sub
 Public Function CompareTo(ByVal AnEmployee As Object) As Integer _
 Implements IComparable.rupareTo
   If CType(AnEmployee, Employee).Salary < Me.Salary Then
     Return -1
   ElseIf CType(AnEmployee, Employee).Salary = Me.Salary Then
     Return 0
   ElseIf CType(AnEmployee, Employee).Salary > Me.Salary Then
     Return 1
   End If
 End Function
 Public ReadOnly Property TheName() As String
   Get
     Return m_Name
   End Get
 End Property
 Public ReadOnly Property Salary() As Decimal
   Get
     Return MyClass.m_Salary
   End Get
 End Property

End Class


 </source>