Collections Data Structure C#

using System;
  delegate bool Comparator(object lhs, object rhs);
  class MainEntryPoint {
    static void Main() {
      Employee [] employees = {
              new Employee("A", 20000),
              new Employee("B", 10000),
              new Employee("C", 25000),
              new Employee("D", 99999),
              new Employee("E", 23000),
              new Employee("F", 50000)};
              
      BubbleSorter.Sort(employees, new Comparator(Employee.IsGreater));
      for (int i=0 ; i        Console.WriteLine(employees[i].ToString());
      }  
    }
  }
  class Employee {
    private string name;
    private decimal salary;
    public Employee(string name, decimal salary)
    {
      this.name = name;
      this.salary = salary;
    }
    public override string ToString()
    {
      return string.Format(name + ", {0:C}", salary);
    }
    public static bool IsGreater(object a, object b)
    {
      Employee empA = (Employee) a;
      Employee empB = (Employee) b;
      return (empA.salary > empB.salary) ? true : false;
    }
  }
  class BubbleSorter
  {
    static public void Sort(object [] sortArray, Comparator gtMethod) {
      for (int i=0 ; i        for (int j=i+1 ; j          if (gtMethod(sortArray[j], sortArray[i])) {
            object temp = sortArray[i];
            sortArray[i] = sortArray[j];
            sortArray[j] = temp;
          }
        }
      }
    }
  }