学生类的静态方法用于对一组学生进行排序后输出,而排序的依据由comparefunction委托对象(其类型被定义为student的嵌套类型)决定。主程序类的三个静态方法comparename,compareage和comparegrade分别按照姓名,年龄和年级来比较两个学生对象,使得程序可以不同的排序方式来输出学生信息!我们老师出的题,贴出来大家一起研究

解决方案 »

  1.   

    假设我们要排序的类是Stu,定义如下:
        public class Stu
        {
            public string Class;
            public int Code;
            public int Age;    }
    我们新建一个Stu比较器:
    public class StuCmpr : IComparer<Stu>
        {        public enum Order { Class, Age, Code }
            public Order oder;
            public int Compare(Stu a, Stu b) 
            {
                switch (oder)
                {
                    case Order.Age:
                        return a.Age.CompareTo(b.Age);                case Order.Class:
                        return a.Class.CompareTo(b.Class);                case Order.Code:
                        return a.Code.CompareTo(b.Code);                default:
                        return a.Code.CompareTo(b.Code);            }
            }
        }在比较器中,我们定义了按照Age,Code,Class排序的三种case,已实现按照不同的字段排序。
    Usage:
                StuCmpr cmp = new StuCmpr();//新建比较器
                cmp.oder = StuCmpr.Order.Age;//设置比较器的排列字段
                List<Stu> stus = new List<Stu>();
                for (int i = 0; i < 10; i++)
                {
                    Stu stu = new Stu();
                    stu.Age = i;
                }
                stus.Sort(cmp);//排序
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/angel6709/archive/2009/09/03/4516265.aspx
      

  2.   

    你就把1楼的switch下的语句写成单个的函数
    然后用委托来调用这些函数不就行了1楼的代码很清楚了