Вы уже внедрили интерфейс IComparable. Я предлагаю вам использовать IComparable<taxpayer>
.
Вот как вы можете реализовать IComparable<taxpayer>
в классе taxpayer
:
Вам не нужно добавлять if
операторы внутри метода CompareTo
. Возвращает отрицательное значение, если значение this
меньше, а other
больше. Верните положительный результат, если верно обратное. Верните ноль, если они равны. Это случай простого вычитания их друг от друга this.taxOwed - other.taxOwed
class taxpayer : IComparable<taxpayer>
{
public int taxOwed { get; set; }
public int income { get; set; }
public int CompareTo(taxpayer other)
{
return taxOwed - other.taxOwed;
}
} //end taxpayer IComparable
Если вы используете это так:
public static List<taxpayer> taxPayers = new List<taxpayer>()
{
new taxpayer() { income = 1, taxOwed = 1000 },
new taxpayer() { income = 2, taxOwed = 120 },
new taxpayer() { income = 3, taxOwed = 7812 },
new taxpayer() { income = 4, taxOwed = 4210 },
new taxpayer() { income = 5, taxOwed = 400 },
new taxpayer() { income = 6, taxOwed = 230 },
};
static void Main()
{
taxPayers.Sort();
foreach (var t in taxPayers)
Console.WriteLine(t.taxOwed);
}
Вывод будет:
120
230
400
1000
4210
7812
Обновление Код был сбит с толку, и я не обратил внимания на то, что существует два класса taxpayer
и Taxpayer
. Почему у вас их обоих? Вам нужен только один, и вы можете реализовать IComparable<Taxpayer>
, как указано выше.