我认为我很接近这一点,但不确定如何/从CompareTo方法返回什么。
我的类有以下3个要排序的属性(其中最高值为3) 公共课成绩{ int Score1 int Score2 int Score3 }
List<Scores> scores = new List<Scores>();
scores.Add(new Score{ Score1 = 50, Score2 = 40, Score3 = 30});
scores.Add(new Score{ Score1 = 30, Score2 = 60, Score3 = 50});
scores.Add(new Score{ Score1 = 20, Score2 = 90, Score3 = 100});
我正在寻找的是排序第3行,因为100是任何行的最高数。 Row2将是第二个,因为60是剩余2行的下一个最高值。然后Row1最后一次。
不确定要返回什么?
virtual public int CompareTo(object obj)
{
if (obj is BaseAttack)
{
var compareObj = (BaseAttack)obj;
if (compareObj.Score1 > compareObj.Score2 && compareObj.Score1 > compareObj.Score3)
{
return this.a.CompareTo(compareObj.a);
}
else if (compareObj.Score2 > compareObj.Score1 && compareObj.Score2 > compareObj.Score3)
{
return this.a.CompareTo(compareObj.Score2);
}
else
{
return compareObj.Score3;
}
}
else
{
throw new ArgumentException("Object is not a MyObject ");
}
}
答案 0 :(得分:-2)
CompareTo返回一个整数 - 对象之间的相对差异。例如,如果比较2个整数,则可以返回A - B.
在你的情况下,如果obj> gt,你需要返回1这个和-1否则。如果对象相等则返回0。