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());

これは問題ありませんが、このアプローチは2つのインスタンスのみを比較しているため、これは限られた使用法であることがわかります. オブジェクトの 2 つだけでなく、多数のオブジェクトを比較したい場合はどうすればよいですか?

4

3 に答える 3

8

Comparer の使用法を誤解しています。のインスタンスが1000個ある場合でも、配列をソートしますCar一度に 2 つを比較するだけです。

于 2012-11-13T11:20:10.343 に答える
2

@Jamiecの回答に加えて、LINQを使用して配列をソートできます-

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