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;
}
}
它本质上是在颠倒比较。由于Compare通过将其乘以-1返回-1(小于)、0(等于)或1(大于),因此它将反转结果-1变为1,0保持为0,1变为-1。
正如sstan所提到的,它可能应该写成v2v1.CompareTo(v1v2)
。