C# 覆盖 IComparer 接口的比较方法

C# Override Compare method of IComparer Interface

我有一个 class 覆盖了 IComarer class 的比较方法。 你能解释一下代码部分 "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;

    }
}

本质上是颠倒比较。由于 Compare returns -1(小于)、0(等于)或 1(大于),将其乘以 -1,将结果反转 -1 变为 1,0 仍然为 0,1 变为 -1 .

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