C#重写IComparer接口的Compare方法

本文关键字:Compare 方法 接口 重写 IComparer | 更新日期: 2023-09-27 18:26:25

我有一个类,它覆盖了IComarer类的Compare方法。你能解释一下代码部分"return v1v2.CompareTo(v2v1)*-1;"吗?这里代表什么?为什么我们要把这个值减去1?

public class ValueComparator : System.Collections.IComparer
{
    public int Compare(Object lhs, object rhs)
    {
        string v1 = lhs.ToString();
        string v2 = rhs.ToString();
        string v1v2 = v1 + v2;
        string v2v1 = v2 + v1;
        return v1v2.CompareTo(v2v1)*  -1;
    }
}

C#重写IComparer接口的Compare方法

它本质上是在颠倒比较。由于Compare通过将其乘以-1返回-1(小于)、0(等于)或1(大于),因此它将反转结果-1变为1,0保持为0,1变为-1。

正如sstan所提到的,它可能应该写成v2v1.CompareTo(v1v2)