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

最佳答案

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

这允许您执行以下操作:
list.Sort(new ReverseComparer(someOtherComparer));

10-08 00:29