Tip10 創建對象時需要考慮是否實現比較器

Tip10 創建對象時需要考慮是否實現比較器
有對象的地方就會存在比較,在創建對象的時候需要考慮是否實現比較器(實現接口IComparable和IComparer)
下面舉個例子,根據排序的需要,列表要支持針對基本工資或獎金來羅列Salary:

    static void Main(string[] args)
    {
        List<Salary> companySalary = new List<Salary>()
                {
                    new Salary() { Name = "Mike", BaseSalary = 3000, Bonus = 1000 },
                    new Salary() { Name = "Rose", BaseSalary = 2000, Bonus = 4000 },
                    new Salary() { Name = "Jeffry", BaseSalary = 1000, Bonus = 6000 },
                    new Salary() { Name = "Steve", BaseSalary = 4000, Bonus = 3000 }
                };
        companySalary.Sort(new BonusComparer());    //提供一個非默認的比較器
        foreach (Salary item in companySalary)
        {
            Console.WriteLine(string.Format("Name:{0} \tBaseSalary:{1} \tBonus:{2}", item.Name, item.BaseSalary, item.Bonus));
        }
    }

    class Salary : IComparable<Salary>
    {
        public string Name { get; set; }
        public int BaseSalary { get; set; }
        public int Bonus { get; set; }

        #region IComparable<Salary> 成員

        public int CompareTo(Salary other)
        {
            return BaseSalary.CompareTo(other.BaseSalary);
        }

        #endregion
    }

    class BonusComparer : IComparer<Salary>
    {
        #region IComparer<Salary> 成員

        public int Compare(Salary x, Salary y)
        {
            return x.Bonus.CompareTo(y.Bonus);
        }

        #endregion
    }
發佈了52 篇原創文章 · 獲贊 24 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章