オブジェクトの複数のプロパティを比較しようとしていますが、コードではdegreeプロパティを比較することしかできません。 Visual Studioでデバッグするとき、私のコードには完全にelse文がないようです。私はどんなヒントもありがとう。結果は1かいないに等しいのいずれかとすることができるので、あなたのコードIComparable CompareTo()、複数のオブジェクトプロパティを比較するにはどうすればよいですか?
if (this.deg.CompareTo(newStudent.deg) == 1)
{
// do something
}
else if (this.deg.CompareTo(newStudent.deg) != 1)
{
// do something
}
else
{
// do something
}
else文で
class Student : IComparable
{
private string fName;
private string lName;
private string deg;
private int gra;
public Student(string firstName, string lastName, string degree, int grade)
{
fName = firstName;
lName = lastName;
deg = degree;
gra = grade;
}
public override string ToString()
{
string var = lName + ", " + fName + " (" + deg + ") Grade: " + gra;
return var;
}
public int CompareTo(object obj)
{
Student newStudent = obj as Student;
if (this.deg.CompareTo(newStudent.deg) == 1)
{
return 1;
}
else if (this.deg.CompareTo(newStudent.deg) != 1)
{
return -1;
}
else //this is what my code is ignoring and not ordering by firstname as well
{
if (this.fName == newStudent.fName)
{
return 0;
}
else if (this.fName != newStudent.fName)
{
return -1;
}
else
{
return 0;
}
}
}
}
を実装することができます度が等しい場合は、すぐに1を返す場合、別の性質によって例えば並べ替えしようとしている場合。それはおそらくあなたが望むものではありません。 –