C#对雇员工资进行排序升级版

这里是要写一个对雇员的工资进行排序,但是为了以后能通过同一个方法就可以对不同的类型进行排序,就举了一个雇员类的方法,以供参考。

这里用了泛型,Func委托,冒泡排序

这里是对雇员类的定义
 class Employee
    {
        private string name;
        private int sole;//出售

        public string Name { get => name; set => name = value; }
        public int Sole { get => sole; set => sole = value; }

        public Employee(string name, int sole)
        {
            this.name = name;
            this.sole = sole;//出售
        }
        //因为是比较雇员的信息,所有就调用雇员的方法
        public static bool CompareMethod(Employee e1,Employee e2)
        {
            //如果e1大于e2的话,返回true,否则就返回false
            if (e1.sole > e2.sole) { return true; }
            //这里是比较雇员之间工资的高低
            return false;
        }
 //对类中定义的name和sole进行重写,否则会输出项目名
        public override string ToString()
        {
            return name+" "+sole;
        }
    }
这里是任意类型数据进行调用的方法,其中compareMethod是调用雇员类中的比较方法。因为排序就要对数据进行比较,又不好确定是什么类型的,就要用到Func委托,这里定义的func委托是: Func<T,T,bool>,其中bool是调用compareMethod中的 返回值,从而对数据进行比较。
   //对任意类型的数据,进行排序
        static void CommonSort<T>(T[] ArrySort,Func<T,T,bool> CompareMethod)//这里是调用了雇员比较方法
            //用func形进行委托,两个不知道类型的参数,返回bool值类型的一个方法
        {
            Boolean swapped = true;
            while (swapped)//为假时退出循环
            {
                swapped = false;//在程序for循环到最后一次时,swapped才会变为true
                for (int i = 0; i < ArrySort.Length - 1; i++)//总长度的最后一个就不用排了
                {

                    if (CompareMethod(ArrySort[i],ArrySort[i+1]))
                        //调用compareMethod中的比较方法
                        //这里也是func<T,T,bool>
                    {
                        T temp = ArrySort[i];
                        ArrySort[i] = ArrySort[i + 1];
                        ArrySort[i + 1] = temp;
                        swapped = true;
                    }
                }
            }
        }
而最后的main函数就是,对employee进行赋值
   //调用employee类,并给雇员赋值
            Employee[] employees = new Employee[]
            {
                new Employee("a",2000),
                new Employee("e",2300),
                new Employee("f",4300),
                new Employee("c",25300),
                new Employee("h",2330),
                new Employee("D",2400),
                new Employee("b",3300)

            };
            //在main中用委托类型func
            CommonSort<Employee>(employees, Employee.CompareMethod);
            //遍历
            //这个类型为employee
            foreach (Employee e in employees)
            {
                Console.WriteLine(e);
            }

最后输出为





猜你喜欢

转载自blog.csdn.net/qq_39374899/article/details/80943946