Module Module1
Class Employee
Public FirstNme As String
Public LastName As String
Public Title As String
Public Salary As Double
Public Sub New(ByVal LastName As String, ByVal FirstNme As String, _
ByVal Title As String, ByVal Salary As Double)
Me.FirstNme = FirstNme
Me.LastName = LastName
Me.Title = Title
Me.Salary = Salary
End Sub
End Class
Delegate Function Compare(ByVal A As Employee, ByVal B As Employee) As Boolean
Dim CompareMethod As New Compare(AddressOf CompareTitle)
Function CompareTitle(ByVal A As Employee, ByVal B As Employee) As Boolean
If (A.Title < B.Title) Then
CompareTitle = False
Else
CompareTitle = True
End If
End Function
Function CompareLastName(ByVal A As Employee, ByVal B As Employee) As Boolean
If (A.LastName < B.LastName) Then
CompareLastName = False
Else
CompareLastName = True
End If
End Function
Function CompareSalary(ByVal A As Employee, ByVal B As Employee) As Boolean
If (A.Salary < B.Salary) Then
CompareSalary = False
Else
CompareSalary = True
End If
End Function
Public Sub SortList(ByVal Employeelist() As Employee)
Dim I, J As Integer
Dim Temp As Employee
For I = 0 To Employeelist.Length - 2
For J = I + 1 To Employeelist.Length - 1
If (CompareMethod(Employeelist(I), Employeelist(J))) Then
Temp = Employeelist(I)
Employeelist(I) = Employeelist(J)
Employeelist(J) = Temp
End If
Next
Next
End Sub
Sub Main()
Dim EmployeeList(3) As Employee
EmployeeList(0) = New Employee("A","Z", "W", 49.99)
EmployeeList(1) = New Employee("Z","A", "J", 49.99)
EmployeeList(2) = New Employee("B", "X", "K", 49.99)
EmployeeList(3) = New Employee("P","O", "A", 39.99)
SortList(EmployeeList)
Console.WriteLine("By Title")
Dim EmployeeEntry As Employee
For Each EmployeeEntry In EmployeeList
Console.WriteLine(EmployeeEntry.LastName & " " & EmployeeEntry.Title & " " & EmployeeEntry.Salary)
Next
Console.WriteLine("By LastName")
CompareMethod = AddressOf CompareLastName
SortList(EmployeeList)
For Each EmployeeEntry In EmployeeList
Console.WriteLine(EmployeeEntry.LastName & " " & EmployeeEntry.Title & " " & EmployeeEntry.Salary)
Next
Console.WriteLine("By Salary")
CompareMethod = AddressOf CompareSalary
SortList(EmployeeList)
For Each EmployeeEntry In EmployeeList
Console.WriteLine(EmployeeEntry.LastName & " " & EmployeeEntry.Title & " " & EmployeeEntry.Salary)
Next
End Sub
End Module
|