【发布时间】:2015-11-18 16:51:25
【问题描述】:
我有一堂课:
public class Customer :IComparable<Customer>
{
public int Id { get; set; }
public string Name { get; set; }
public int Salary { get; set; }
}
我也有一个列表:
Customer cust = new Customer() { Id=10,Name="Jack",Salary= 15000};
Customer cust1 = new Customer() { Id = 10, Name = "Abby", Salary = 5000 };
Customer cust2 = new Customer() { Id = 10, Name = "Zed", Salary = 152000 };
List<Customer> CustomerList = new List<Customer>();
list.Add(cust);
list.Add(cust1);
list.Add(cust2);
CustomerList.Sort();
我明白为什么 list.Sort 对 Customer 不起作用,因为 Customer 类具有三个属性并且它不知道如何对其进行排序。但是,如果我在Customer 类中实现接口IComparable,我就可以按照我想要的任何方式对客户列表进行排序。
public class Customer :IComparable<Customer>
{
public int Id { get; set; }
public string Name { get; set; }
public int Salary { get; set; }
public int CompareTo(Customer other)
{
return this.Salary.CompareTo(other.Salary);
}
}
现在我的问题是.. 实现 CompareTo 方法如何让我对CustomerList 进行排序?我什至没有覆盖排序方法或任何东西。
我很困惑,因为我根本没有使用 CompareTo 方法。
我阅读了https://stackoverflow.com/a/4188041/2064292,但它没有回答我的问题。
【问题讨论】:
-
排序是通过相互比较项目来完成的,看看哪个项目应该放在第一位——如果你已经有一个排序算法(由列表实现提供),它只需要知道如何比较你的项目.这取决于您 - 在实现
CompareTo时 - 提供确定两个Customer对象中的哪一个应该先出现的逻辑。 -
您是否阅读了 MS 网站上的文档?它有一个完整的示例,说明如何实现接口以及如何使用它。 msdn.microsoft.com/en-us/library/…
-
@Igor 我已经实现了示例中的接口。但我不明白这是如何让
CustomerList.Sort();工作的?
标签: c# asp.net .net generics interface