Глава 12. Коллекции. Обобщения
283
Посредством
метода
Contains()
проверяется наличие некоторого эле-
мента в списке, с помощью метода
Insert()
в середину списка вставля-
ется новый элемент, после чего снова выводится содержимое списка.
Свойство по умолчанию
Item()
(индексатор в C#) позволяет извлечь
элемент из списка,
с помощью метода
Remove()
удаляется первый эк-
земпляр дублированного элемента, добавленный ранее, и содержимое
списка выводится вновь. Метод
Remove()
всегда удаляет первый обна-
руженный им экземпляр. С помощью метода
TrimExcess()
емкость
уменьшается в соответствии с числом элементов и выводятся значения
свойств
Capacity
и
Count
. Если незадействованная емкость составляет
менее 10% от общей емкости, изменение размера списка не требуется.
В заключение используется метод
Clear()
для удаления всех элементов
из списка и выводятся значения свойств
Capacity
и
Count
.
Отметим еще
одну деталь: оператор
foreach
для коллекции, образованной из этого
класса, не требует создания перечислителя и связки его с этим опера-
тором.
Создание сравнимых объектов
Сравнение объектов может происходить по разным аспектам. Напри-
мер, по типам: относятся ли объекты
к одному и тому же типу или
к разным типам. Для этого существуют операторы
is
и
as
. Но мож-
но сравнивать объекты по значениям их определенных полей. Тут уже
употребляются обычные операции сравнения: "больше", "меньше"
и т. д. Такой способ сравнения позволяет выполнять одну из необходи-
мых операций при обработке информации — сортировку, т. е. упорядо-
чение некоего вида информации по величине того или иного ее поля в
сторону его увеличения или убывания. Для
этой цели существует спе-
циальный интерфейс
IComparable
в пространстве имен
System
с единст-
венным своим членом — методом
CompareTo()
. Это обобщенный метод
сравнения для типа, который реализуется типом
или классом значения,
чтобы упорядочить или сортировать его экземпляры. Он возвращает
число типа
int
, значение которого указывает на местоположение срав-
ниваемых объектов: если возвращаемое число меньше нуля, это значит,
что экземпляр класса, в котором
находится метод сравнения, располо-
жен (в памяти) перед указанным в параметре метода объектом. Если
возвращаемое число больше нуля, это значит, что экземпляр класса,
в котором находится метод сравнения, расположен (в памяти) после
указанного в параметре метода объекта.
При равенстве нулю объекты
равны.