我是否需要2个Comparer <T>才能在两个方向上进行排序?

Stu*_*ing 4 c# sorting .net-4.0

如果我Comparer<T>为了排序一组对象而创建一个对象,是否有一种简单的方法可以"反转"它以便我可以向另一个方向排序?或者我需要Comparer<T>在比较方法中交换测试来定义第二个?

Ser*_*rvy 5

public class ReverseComparer<T> : Comparer<T>
{
    private Comparer<T> inputComparer;
    public ReverseComparer(Comparer<T> inputComparer)
    {
        this.inputComparer = inputComparer;
    }

    public override int Compare(T x, T y)
    {
        return inputComparer.Compare(y, x);
    }
}
Run Code Online (Sandbox Code Playgroud)

这允许您执行以下操作:

list.Sort(new ReverseComparer(someOtherComparer));
Run Code Online (Sandbox Code Playgroud)