Проблема в том, что вы переключили сравнение с animal.CompareTo(targetAnimal)
на targetAnimal.CompareTo(animal)
, поэтому вы не получите последовательных результатов.Вы должны иметь animal
в качестве первого объекта в обоих случаях.
Например:
public int Compare(Animal animal, Animal targetAnimal)
{
// Compare diet first.
if (animal.FoodDiet.CompareTo(targetAnimal.FoodDiet) != 0)
{
return animal.FoodDiet.CompareTo(targetAnimal.FoodDiet);
}
// Compare size.
return animal.Size.CompareTo(targetAnimal.Size);
}
Или вы можете немного упростить его:
public int Compare(Animal animal, Animal targetAnimal)
{
return animal.FoodDiet.CompareTo(targetAnimal.FoodDiet) != 0
? animal.FoodDiet.CompareTo(targetAnimal.FoodDiet)
: animal.Size.CompareTo(targetAnimal.Size);
}