我需要2的Comparer< T>用于在两个方向上分选?两个、Comparer、LT、GT

2023-09-08 09:37:56 作者:香甜四叶草

如果我创建一个的Comparer< T> 进行排序一组对象而言,有一个简单的方法来'倒置',所以我可以在排序另一个方向?或者,我需要定义一个第二的Comparer< T> 与测试的比较方法交换左右

解决方案

 公共类ReverseComparer< T> :的Comparer< T>
{
    私人的Comparer< T> inputComparer;
    公共ReverseComparer(的Comparer< T> inputComparer)
    {
        this.inputComparer = inputComparer;
    }

    公众覆盖INT比较(T X,T Y)
    {
        返回inputComparer.Compare(Y,X);
    }
}
 

这允许你做的是这样的:

  list.Sort(新ReverseComparer(someOtherComparer));
 
54岁空军女摄影家沈玲荣获第八届中国摄影金像奖

If I create a Comparer<T> for the purposes of sorting a set of objects, is there a simple way to 'invert' it so I can sort in the other direction? Or do I need to define a 2nd Comparer<T> with the tests in the Compare method swapped around?

解决方案

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

This allows you to do something like:

list.Sort(new ReverseComparer(someOtherComparer));