我正在关注Apress pro c#framework的示例,我对IComparer接口有疑问 如果我想创建一些自定义比较器,它将按名称比较我的对象,我应该实现IComparer接口,所以我有以下
public class CarNameComparer : IComparer
{
int IComparer.Compare(object obj1, object obj2)
{
Car temp1 = obj1 as Car;
Car temp2 = obj2 as Car;
if (temp1 != null && temp2 != null)
{
return String.Compare(temp1.Name, temp2.Name);
}
else
{
throw new ArgumentException("Parameter is not a Car");
}
}
}
我打算像这样比较
Array.Sort(italianCars, new CarNameComparer());
哪个好,但这个方法只比较两个实例,据我所知,这是一个有限的用法。如果我想比较一堆对象,而不仅仅是两个对象,该怎么办?
答案 0 :(得分:8)
您误解了Comparer的使用。即使有{000}个Car
实例,它仍会对数组进行排序。它只是通过一次比较两个来做到这一点!
答案 1 :(得分:2)
除了@Jamiec答案,您还可以使用LINQ -
对数组进行排序italianCars.OrderBy(car => car.Name);
答案 2 :(得分:1)