C#委托2

作者: 若水生花啊啊啊 | 来源:发表于2017-12-14 22:25 被阅读0次
    class Program
        {
            static void Main(string[] args)
            {
                Employee[] employees =
                {
                    new Employee("Bugs Bunny",20000),
                    new Employee("Elmer Fudd",10000),
                    new Employee("Daffy Duck",25000),
                    new Employee("Wile Coyote",1000000.38m),
                    new Employee("Foghorn Leghorn",23000),
                    new Employee("RoadRunner",50000)
                };
    
                BubbleSorter.Sort<Employee>(employees,Employee.CompareSalary);
                foreach (var employee in employees)
                {
                    Console.WriteLine(employee);
                    Console.WriteLine();
                }
                Console.ReadKey();
            }
        }
        public class BubbleSorter
        {
            static public void Sort<T>(IList<T> sortArray, Func<T, T, bool> comparison)
            {
                bool swapped = true;
                do
                {
                    swapped = false;
                    for (int i = 0; i < sortArray.Count-1; i++)
                    {
                        if (comparison(sortArray[i + 1], sortArray[i]))
                        {
                            T temp = sortArray[i];
                            sortArray[i] = sortArray[i + 1];
                            sortArray[i + 1] = temp;
                            swapped = true;
                        }
                    }
                } while (swapped);
            }
        }
        public class Employee
        {
            public Employee(string name, decimal salary)
            {
                this.Name = name;
                this.Salary = salary;
            }
    
            public string Name { get; private set; }
            public decimal Salary { get; private set; }
    
            public override string ToString()
            {
                return string.Format("{0},{1:C}",Name,Salary);
            }
            public static bool CompareSalary(Employee e1, Employee e2)
            {
                return e1.Salary < e2.Salary;
            }
        }
    
    

    Func<T, T, bool> 是一个委托类型,最后一个类型表示返回的类型。
    BubbleSorter.Sort<Employee>(employees,Employee.CompareSalary);这样写没有问题。
    BubbleSorter.Sort(employees,Employee.CompareSalary);这样写也没有问题,编译器可以自动推断类型。

    相关文章

      网友评论

          本文标题:C#委托2

          本文链接:https://www.haomeiwen.com/subject/xtilwxtx.html