Mega Code Archive

 
Categories / VB.Net by API / System Collections
 

Implements IComparer

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.Compare     Dim temp1 As Employee = CType(firstEmp, Employee)     Dim temp2 As Employee = CType(secondEmp, Employee)     Return String.Compare(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.CompareTo     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