我需要2的Comparer< T>用于在两个方向上分选? [英] Do I need 2 Comparer<T> for sorting in both directions?

查看:97
本文介绍了我需要2的Comparer< T>用于在两个方向上分选?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我创建一个的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));
 

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

这篇关于我需要2的Comparer&LT; T&GT;用于在两个方向上分选?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆