Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
...
// Реализация интерфейса IComparable.
int IComparable.CompareTo(object obj)
{
if (obj is Car temp)
{
if (this.CarID > temp.CarID)
{
return 1;
}
if (this.CarID < temp.CarID)
{
return -1;
}
return 0;
}
throw new ArgumentException("Parameter is not a Car!");
// Параметр не является объектом типа Car!
}
}
Как видите, логика метода
CompareTo()
CompareTo()

Предыдущую реализацию метода
CompareTo()
int
System.Int32
IComparable
CompareTo()
Car
int IComparable.CompareTo(object obj)
{
if (obj is Car temp)
{
return this.CarID.CompareTo(temp.CarID);
}
throw new ArgumentException("Parameter is not a Car!");
// Параметр не является объектом типа Car!
}
В любом случае, поскольку тип
Car
// Использование интерфейса IComparable.
// Создать массив объектов Car.
...
// Отобразить текущее содержимое массива.
Console.WriteLine("Here is the unordered set of cars:");
foreach(Car c in myAutos)
{
Console.WriteLine("{0} {1}", c.CarID, c.PetName);
}
// Теперь отсортировать массив с применением IComparable!
Array.Sort(myAutos);
Console.WriteLine();
// Отобразить отсортированное содержимое массива.
Console.WriteLine("Here is the ordered set of cars:");
foreach(Car c in myAutos)
{
Console.WriteLine("{0} {1}", c.CarID, c.PetName);
}
Console.ReadLine();
Ниже показан вывод, полученный в результате выполнения приведенного выше кода:
***** Fun with Object Sorting *****
Here is the unordered set of cars:
1 Rusty
234 Mary
34 Viper
4 Mel
5 Chucky
Here is the ordered set of cars:
1 Rusty
4 Mel
5 Chucky
34 Viper
234 Mary
Указание множества порядков сортировки с помощью IComparer
В текущей версии класса
Car
CarID
Car
IComparer
System.Collections
// Общий способ сравнения двух объектов.
interface IComparer
{
int Compare(object o1, object o2);
}
На заметку! Обобщенная версия этого интерфейса (
IСоmраrаble<Т>
В отличие от
IСоmраrаble
IComparer
Car
Car
Car
IComparer
System.Collections