|
Элементы коллекций
Коллекции предназначены, строго говоря,
для тех же целей, что и массивы языка Турбо Паскаль:
они позволяют создать набор из произвольного количества
элементов и организуют индексный способ доступа к этим
элементам. В отличие от массивов коллекции обладают
двумя новыми свойствами. Во-первых, их размер может
динамически меняться в ходе работы программы, фактически
ограничиваясь лишь доступной памятью. Во-вторых, в коллекции
могут храниться элементы разных типов. Последнее свойство
называется полиморфизмом коллекций.
Технически коллекции представляют собой
массивы нетипизированных указателей на размещенные в
динамической памяти элементы коллекций. Эти массивы
размещаются в куче - отсюда возможность динамического
изменения размеров коллекций; с другой стороны, входящие
в эти списки указатели позволяют ссылаться на произвольные
элементы, отсюда полиморфизм.
Полиморфизм коллекций - это очень мощное
средство, которым следует пользоваться с осторожностью,
поскольку фактически коллекция хранит лишь указатели
на элементы. Компилятор не может проверить правильность
доступа к элементам; Вы можете поместить в коллекцию
один объект, а взять его из коллекции как объект другого
типа и компилятор не сможет предупредить Вас об этом.
|