Язык программирования C#9 и платформа .NET5. Страница 181
... // Реализация интерфейса 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()intSystem.Int32IComparableCompareTo()Carint 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 Rusty234 Mary34 Viper4 Mel5 ChuckyHere is the ordered set of cars:1 Rusty4 Mel5 Chucky34 Viper234 MaryУказание множества порядков сортировки с помощью IComparer
В текущей версии класса
CarCarIDCarIComparerSystem.Collections// Общий способ сравнения двух объектов.interface IComparer{ int Compare(object o1, object o2);}На заметку! Обобщенная версия этого интерфейса (
IСоmраrаble<Т>В отличие от
IСоmраrаbleIComparerCarCarCarIComparerSystem.Collections
Перейти на страницу:
Изменить размер шрифта: