Найти тему

C# - Сортировка списка объектов

© Культин Н.Б., 2022

В классе List определен метод Sort, который выполняет сортировку списка. Метод Sort работает, если элементами списка являются объекты классов, для которых определен метод CompareTo. К таким классам относятся, например, классы string, int, double. Таким образом, для того, чтобы выполнить сортировку простого списка, списка строк или чисел, к нему надо применить метод Sort.

Если список состоит из объектов, определенных программистом, то для того, чтобы использовать метод Sort для сортировки списка, в классе, к которому относятся объекты списка, необходимо определить метод CompareTo, выполняющий сравнение объектов по содержимому какого либо из полей.

Обратите внимание, в заголовке объявления класса Sale через двоеточие указан идентификатор IComparable, это означает, что класс Sale является производным от класса IComparable и, как следствие, должен иметь метод CompareTo, позволяющий сравнивать объекты. Для сортировки по возрастанию, метод CompareTo должен возвращать -1, если объект, к которому он применяется, меньше объекта, указанного в качестве параметра метода. Если объекты равны, то значение метода CompareTo должно быть равно нулю. Если объект, к которому применяется метод, меньше объекта, указанного в качестве параметра, то значение метода CompareTo должно быть равно 1. В приведенной реализации объекты Sale сравниваются по содержимому поля title. Сравнение полей title выполняется при помощи метода CompareTo класса String. Обратите внимание, в качестве типа параметра метода CompareTo указан класс object – базовый класс для всех классов. Однако, чтобы получить доступ к свойству title объекта-параметра необходимо, чтобы параметр был объектом класса Sale. Для разрешения этой проблемы используется объект b, который получает значение объекта obj как объекта класса Sale - тип object приводится к типу Sale (явное указание типа перед выражением называется операцией приведения типов). Слово this в реализации метода CompareTo обозначает объект, к которому применяется метод, т.е. объект, который сравнивается с объектом, указанным в качестве параметра.

-2

Если сортировку списка объектов Sale надо выполнить по содержимому поля volume, например, по убыванию, то метод CompareTo должен выглядеть так:

-3

Литература

Культин Н. Б. C# для начинающих. Самоучитель с примерами и задачами для самостоятельного решения. эл. - 1 файл pdf : 130 c. Текст: электронный.

Культин Н.Б. Самоучитель C#. Текст: электронный (приложение для Android)

Наука
7 млн интересуются