欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入IComparable與IComparer的排序?qū)嵗斀?/h1>
 更新時(shí)間:2013年06月09日 10:09:16   作者:  
本篇文章是對IComparable與IComparer的排序?qū)嵗M(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
如下所示:
復(fù)制代碼 代碼如下:

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;
        }
        //顯示接口實(shí)現(xiàn)
        int IComparable.CompareTo(object obj)
        {
            if (!(obj is Employee))
            {
                throw new ArgumentException("不是Employee類");
            }
            return _Name.CompareTo(((Employee)obj)._Name);
        }
        //提供一個(gè)公用的強(qiáng)類型重載版本
        public int CompareTo(Employee Em)
        {
            return _Name.CompareTo(Em._Name);
        }
        //當(dāng)?shù)谝淮螌?shí)例化Employee的時(shí)候,_SalaryCom為空,當(dāng)使用SalaryCom時(shí),就會創(chuàng)建一個(gè)SalaryCompare對象,第2次,3次的時(shí)候,就可以直接使用_SalaryCom了
        private static SalaryCompare _SalaryCom = null;
        public static IComparer SalaryCom
        {
            get
            {
                if (_SalaryCom == null)
                {
                    _SalaryCom = new SalaryCompare();
                }
                return _SalaryCom;
            }
        }
        //嵌套類(這個(gè)類是針對薪水進(jìn)行排序的類)
        private class SalaryCompare:IComparer
        {
            //使用指定的IComparer對Array中的元素進(jìn)行排序
            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();
        }
    }
}

相關(guān)文章

  • C#?wpf實(shí)現(xiàn)任意控件更多調(diào)整大小功能

    C#?wpf實(shí)現(xiàn)任意控件更多調(diào)整大小功能

    這篇文章主要為大家詳細(xì)介紹了C#?wpf實(shí)現(xiàn)任意控件更多調(diào)整大小功能的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • C#實(shí)現(xiàn)驗(yàn)證字符串的長度的方法詳解

    C#實(shí)現(xiàn)驗(yàn)證字符串的長度的方法詳解

    這篇文章主要為大家詳細(xì)介紹了C#如何使用正則表達(dá)或者計(jì)算字符數(shù)組長度或字符串的長度來驗(yàn)證驗(yàn)證字符串的長度,感興趣的小伙伴可以學(xué)習(xí)一下
    2024-02-02
  • C#中比較常用的DateTime結(jié)構(gòu)的使用方法

    C#中比較常用的DateTime結(jié)構(gòu)的使用方法

    這篇文章主要介紹了C#中比較常用的DateTime結(jié)構(gòu)的使用方法,需要的朋友可以參考下
    2015-11-11
  • C#限速下載網(wǎng)絡(luò)文件的方法實(shí)例

    C#限速下載網(wǎng)絡(luò)文件的方法實(shí)例

    本篇文章主要介紹了C#限速下載網(wǎng)絡(luò)文件的方法實(shí)例,可以限制下載文件的速度,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-12-12
  • C#基于NPOI操作Excel

    C#基于NPOI操作Excel

    這篇文章介紹了C#基于NPOI操作Excel的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#多線程系列之線程等待

    C#多線程系列之線程等待

    本文詳細(xì)講解了C#多線程中的線程等待,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • C#調(diào)用webservice接口的最新方法教程

    C#調(diào)用webservice接口的最新方法教程

    webservice 可以用于分布式應(yīng)用程序之間的交互,和不同程序之間的交互。下面這篇文章主要給大家介紹了關(guān)于C#調(diào)用webservice接口的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面隨著小編來一起看看吧。
    2017-11-11
  • 一篇文章弄懂C#中的async和await

    一篇文章弄懂C#中的async和await

    這篇文章主要給大家介紹了如何通過一篇文章弄懂C#中async和await的相關(guān)資料,async和await相信大家應(yīng)該不陌生,讓異步處理變得更友好,本文通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-07-07
  • utf8編碼檢測方法分享

    utf8編碼檢測方法分享

    這篇文章主要介紹了utf8編碼檢測方法示例,需要的朋友可以參考下
    2014-02-02
  • 可替代log4j日志的c#簡單日志類隊(duì)列實(shí)現(xiàn)類代碼分享

    可替代log4j日志的c#簡單日志類隊(duì)列實(shí)現(xiàn)類代碼分享

    簡單日志類隊(duì)列實(shí)現(xiàn)。可按天周月年大小分割文件??珊唵翁娲鷏og4j
    2013-12-12

最新評論