ICompare接口、Sort()方法

一、接口中的方法並不實現具體功能,繼承於該接口的類必須實現具體功能。數組

核心思想:對修改封閉,對擴展開放。函數

 二、Sort()方法:ui

默認:Sort(內容)this

英文:按照首字母順序排序,首字母相同則看第二個字母;spa

數字:從小到大排序;blog

自定義 Sort(內容,排序規則)排序

內容按照自定義的規則排序。繼承

 

 host類接口

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleEnum
{
    class host
    {
        [STAThread]
        static void Main(string[] args)
        {
            // 建立一個數組,裏面放汽車名和年份    
            car[] arrayOfCars = new car[6]
            {
            new car("Ford",1992),
            new car("Fiat",1988),
            new car("Buick",1932),
            new car("Ford",1932),
            new car("Dodge",1999),
            new car("Honda",1977)
            };


            Console.WriteLine("排序前\n");
            foreach (car c in arrayOfCars)
                Console.WriteLine(c.Make + "\t\t" + c.Year);

            Console.WriteLine("\Sort默認正向排序 \n");
            Array.Sort(arrayOfCars);
            foreach (car c in arrayOfCars)
                Console.WriteLine(c.Make + "\t\t" + c.Year);
 Console.WriteLine("\Sort 按年份正向排序 )\n"); Array.Sort(arrayOfCars, car.sortYearAscending()); foreach (car c in arrayOfCars) Console.WriteLine(c.Make + "\t\t" + c.Year); Console.WriteLine("\Sort 按汽車名正向排序 \n"); Array.Sort(arrayOfCars, car.sortMakeDescending()); foreach (car c in arrayOfCars) Console.WriteLine(c.Make + "\t\t" + c.Year); Console.WriteLine("\Sort 按汽車名反向排序 \n"); Array.Sort(arrayOfCars, car.sortYearDescending()); foreach (car c in arrayOfCars) Console.WriteLine(c.Make + "\t\t" + c.Year); Console.ReadLine(); } } }

  

 

 

 Car類get

using System;
using System.Collections;
namespace ConsoleEnum
{
    public class car : IComparable
    {
        //  嵌套類:類中的類。

        // 按年升序
        private class sortYearAscendingHelper : IComparer
        {
            //實現接口定義的方法
            int IComparer.Compare(object a, object b)
            {
                car c1 = (car)a;
                car c2 = (car)b;

                if (c1.year > c2.year)
                    return 1;

                if (c1.year < c2.year)
                    return -1;

                else
                    return 0;
            }
        }

        // 按年降序
        private class sortYearDescendingHelper : IComparer
        {  //實現接口定義的方法
            int IComparer.Compare(object a, object b)
            {
                car c1 = (car)a;
                car c2 = (car)b;

                if (c1.year < c2.year)
                    return 1;

                if (c1.year > c2.year)
                    return -1;

                else
                    return 0;
            }
        }

        // 按汽車名字母降序
        private class sortMakeDescendingHelper : IComparer
        {  //實現接口定義的方法
            int IComparer.Compare(object a, object b)
            {
                car c1 = (car)a;
                car c2 = (car)b;
                
                return String.Compare(c2.make, c1.make);
            }
        }



        private int year;
        private string make;

        //構造函數
        public car(string Make, int Year)
        {
            make = Make;
            year = Year;
        }

        //屬性
        public int Year
        {
            get { return year; }
            set { year = value; }
        }

        public string Make
        {
            get { return make; }
            set { make = value; }
        }

        // 實現IComparable接口來提供默認的排序順序的對比。
         public  int IComparable.CompareTo(object obj)
        {
            car c = (car)obj;            //調用了C#中封裝的類,詳情見下一篇
            return String.Compare(this.make, c.make);
        }

            //由於這裏使用了嵌套類,把嵌套類包裹到方法中方便調用(類名.方法名)
        public static IComparer sortYearAscending()
        {            //調用了上面的類
            return (IComparer)new sortYearAscendingHelper();
        }

      
        public static IComparer sortYearDescending()
        {          //調用了上面的類
            return (IComparer)new sortYearDescendingHelper();
        }

      
        public static IComparer sortMakeDescending()
        {            //調用了上面的類
            return (IComparer)new sortMakeDescendingHelper();
        }

    }
}
相關文章
相關標籤/搜索