【发布时间】:2017-10-21 21:03:20
【问题描述】:
我想我已经接近了这一点,但不确定如何/从 CompareTo 方法返回什么。
我的班级有以下 3 个我想要排序的属性(其中的最高值为 3) 公开课成绩{ 积分1 积分2 积分 3 }
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 是任何行中的最高数。第 2 行将排在第二位,因为 60 是其余 2 行中的下一个最高值。然后是第 1 行。
不确定要返回什么?
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 ");
}
}
【问题讨论】:
-
如果他/她发布了类似上面的代码,您会尝试阅读其他人的问题吗?
-
“哪一个具有最高的三个值” - 请把这个描述得更好一点?
-
您能否向我们展示六个具有不同值的示例对象,以及比较它们的多种组合的结果(以便我们清楚您的要求)?