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
}