探讨:如何使用委托,匿名方法对集合进行万能排序

 更新时间:2013年06月09日 08:44:43   作者:  
本篇文章是对使用委托,匿名方法对集合进行万能排序进行了详细的分析介绍,需要的朋友参考下
下面Demo中我使用了2种排序方式
1.让Employee继承IComparable 接口,实现CompareTo方法排序
2.定义一个方法使用Comparison<T>委托,排序的操作交给匿名方法
看完下面的代码,你知道使用Comparison<T>委托的好处吗?
复制代码 代码如下:

    class Employee:IComparable
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public static List<Employee> GetEmployees()
        {
            return new List<Employee>()
            {
                new Employee(){Name ="GuoHu",Age =25},
                new Employee(){Name ="LeiHu",Age =23},
                new Employee(){Name ="JunWenLi",Age =24},
                new Employee(){Name ="JinHaoLiu",Age =25},
                new Employee(){Name ="ChengFang",Age =24}
            };
        }
        public int CompareTo(object obj)
        {
            Employee employee = obj as Employee;
            if (employee != null)
            {
                return Name.CompareTo(employee.Name);
            }
            else
            {
                throw new ArgumentException("obj is not Employee");
            }
        }
    }
    class Test
    {
        static void SortAndShowFiles(string title, Comparison<Employee> employeeInfo)
        {
            List<Employee> employee = Employee.GetEmployees();
            employee.Sort(employeeInfo);
            Console.WriteLine(title);
            foreach(Employee e in employee)
            {
                Console.WriteLine("Name:{0},Age:{1}", e.Name, e.Age);
            }
        }
        static void Main()
        {
            List<Employee> employeeInfo = Employee.GetEmployees();
            //Using IComparable sort
            employeeInfo.Sort();
            employeeInfo.ForEach(e => Console.WriteLine("Name:{0},Age{1}/t", e.Name, e.Age));
            SortAndShowFiles("Sort by name", delegate(Employee e1, Employee e2) { return e1.Name.CompareTo(e2.Name); });
            SortAndShowFiles("Sort by age", delegate(Employee e1, Employee e2) { return e1.Age.CompareTo(e2.Age); });
        }

    }

相关文章

  • Unity UGUI的Dropdown下拉菜单组件使用详解

    Unity UGUI的Dropdown下拉菜单组件使用详解

    这篇文章主要为大家介绍了Unity UGUI的Dropdown下拉菜单组件使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • WPF+SkiaSharp实现自绘投篮小游戏

    WPF+SkiaSharp实现自绘投篮小游戏

    这篇文章主要介绍了如何利用WPF+SkiaSharp实现自绘投篮小游戏。此案例主要是针对光线投影法碰撞检测功能的示例,顺便做成了一个小游戏,很简单,但是,效果却很不错,感兴趣的可以动手尝试一下
    2022-08-08
  • UGUI实现图片拖拽功能

    UGUI实现图片拖拽功能

    这篇文章主要为大家详细介绍了UGUI实现图片拖拽功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • C# 生成随机数的代码

    C# 生成随机数的代码

    这篇文章主要介绍了C# 生成随机数的代码的相关资料,非常的简单实用,需要的朋友可以参考下
    2015-03-03
  • 关于C#.net winform程序验证moss的集成身份认证实例

    关于C#.net winform程序验证moss的集成身份认证实例

    因为网站使用的是windows集成认证,所以遇到了权限问题,需要输入密码。使操作和用户体验非常不方便,研究了好久没有找到好的方法,最后终于让我踏破铁鞋总结出了下面的方法
    2013-03-03
  • C#中TCP粘包问题的解决方法

    C#中TCP粘包问题的解决方法

    这篇文章主要为大家详细介绍了C#中TCP粘包问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • C# 关于LoadLibrary的疑问详解

    C# 关于LoadLibrary的疑问详解

    这篇文章主要介绍了C# 关于LoadLibrary的疑问详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C#中简单的装箱操作实例分析

    C#中简单的装箱操作实例分析

    这篇文章主要介绍了C#中简单的装箱操作,实例分析了C#中装箱操作的概念、用法与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • HighCharts图表控件在ASP.NET WebForm中的使用总结(全)

    HighCharts图表控件在ASP.NET WebForm中的使用总结(全)

    这篇文章主要介绍了HighCharts图表控件在ASP.NET WebForm中的使用总结(全),需要的朋友可以参考下
    2015-08-08
  • C# 对象映射的高性能方案

    C# 对象映射的高性能方案

    这篇文章主要介绍了C# 对象映射的高性能方案,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,有需要的朋友可以借鉴参考下
    2020-12-12

最新评论