源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

深入IComparable与IComparer的排序实例详解

  • 时间:2022-09-03 11:21 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:深入IComparable与IComparer的排序实例详解
如下所示:
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace hgoApp {     class Comparer     {         static void Main()         {             Employee[] Employees = new Employee[5];             Employees[0] = new Employee("张三", 2800);             Employees[1] = new Employee("李四", 1800);             Employees[2] = new Employee("王五", 5800);             Employees[3] = new Employee("马六", 12800);             Employees[4] = new Employee("钱七", 8800);             Console.WriteLine("按照姓名排序");             Array.Sort(Employees);             foreach (Employee em in Employees)             {                 Console.WriteLine(em);             }             Console.WriteLine("按照薪水排序");             Array.Sort(Employees, Employee.SalaryCom);             foreach (Employee em in Employees)             {                 Console.WriteLine(em);             }         }     }     class Employee : IComparable     {         private string _Name;         public string Name         {             get { return _Name; }         }         private int _Salary;         public int Salary         {             get { return _Salary; }         }         public Employee(string Name, int Salary)         {             _Name = Name;             _Salary = Salary;         }         //显示接口实现         int IComparable.CompareTo(object obj)         {             if (!(obj is Employee))             {                 throw new ArgumentException("不是Employee类");             }             return _Name.CompareTo(((Employee)obj)._Name);         }         //提供一个公用的强类型重载版本         public int CompareTo(Employee Em)         {             return _Name.CompareTo(Em._Name);         }         //当第一次实例化Employee的时候,_SalaryCom为空,当使用SalaryCom时,就会创建一个SalaryCompare对象,第2次,3次的时候,就可以直接使用_SalaryCom了         private static SalaryCompare _SalaryCom = null;         public static IComparer SalaryCom         {             get             {                 if (_SalaryCom == null)                 {                     _SalaryCom = new SalaryCompare();                 }                 return _SalaryCom;             }         }         //嵌套类(这个类是针对薪水进行排序的类)         private class SalaryCompare:IComparer         {             //使用指定的IComparer对Array中的元素进行排序             int IComparer.Compare(object obj1,object obj2)             {                 if (!(obj1 is Employee) || !(obj2 is Employee))                 {                     throw new ArgumentException("不是Employee类");                 }                 return ((Employee)obj1)._Salary.CompareTo(((Employee)obj2)._Salary);             }         }         public override string ToString()         {             return _Name +"  "+ _Salary.ToString();         }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部