1

我正在关注 Apress pro c# 框架的示例,我对 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());

这很好,但这种方法只比较两个实例,据我所知,这是一种有限的用法。如果我想比较一堆对象,而不仅仅是其中两个呢?

4

3 回答 3

8

您误解了比较器的使用。即使有一千个Car. 它只是通过一次比较两个来做到这一点!

于 2012-11-13T11:20:10.343 回答
2

除了@Jamiec 答案,您还可以使用 LINQ 对数组进行排序 -

italianCars.OrderBy(car => car.Name);
于 2012-11-13T11:21:50.353 回答
1

这应该有助于如何在 Visual C# 中使用 IComparable 和 IComparer 接口

于 2012-11-13T11:20:51.200 回答