- •Содержание
- •Введение
- •Коллекции в .Net
- •Виды коллекций
- •Типы коллекций
- •Интерфейсы, используемые коллекциями
- •Необобщенные коллекции
- •Обобщенные коллекции
- •Основные обобщенные коллекции
- •Параллельные коллекции
- •Специальные и наблюдаемые коллекции
- •Специальные коллекции
- •Наблюдаемые коллекции
- •Битовые коллекции
- •Класс BitArray
- •Структура BitVector32
- •Реализация интерфейса iComparable
- •Реализация интерфейса iComparer
- •Перечислители
- •Применение обычного перечислителя
- •Применение перечислителя типа iDictionaryEnumerator
- •Реализация интерфейсов iEnumerable и iEnumerator
- •Итераторы и оператор yield
- •Именованный итератор
- •Заключение
- •Список использованных источников
- •Приложение а (обязательное) Листинги и результаты работы программ
Необобщенные коллекции
Необобщенные коллекции вошли в состав среды .NET Framework еще в версии 1.0. Они определяются в пространстве имен System.Collections.
Необобщенные коллекции представляют собой структуры данных общего назначения, оперирующие ссылками на объекты. Таким образом, они позволяют манипулировать объектом любого типа, хотя и не типизированным способом. В этом состоит их преимущество и в то же время недостаток. Благодаря тому, что необобщенные коллекции оперируют ссылками на объекты, в них можно хранить разнотипные данные. Это удобно в тех случаях, когда требуется манипулировать совокупностью разнотипных объектов или же когда типы хранящихся в коллекции объектов заранее неизвестны. Но если коллекция предназначается для хранения объекта конкретного типа, то необобщенные коллекции не обеспечивают типовую безопасность, которую можно обнаружить в обобщенных коллекциях. [3]
Необобщенные коллекции определены в ряде интерфейсов и классов, реализующих эти интерфейсы. [2]
Интерфейсы необобщенных коллекций
В пространстве имен System.Collections определен целый ряд интерфейсов необобщенных коллекций. Начинать рассмотрение необобщенных коллекций следует именно с интерфейсов, поскольку они определяют функциональные возможности, которые являются общими для всех классов необобщенных коллекций. Интерфейсы, служащие опорой для необобщенных коллекций, сведены в таблице 2. [2]
Таблица 2 - Интерфейсы, используемые в необобщенных коллекциях
Интерфейс |
Описание |
ICollection |
Определяет элементы, которые должны иметь все необобщенные коллекции |
IComparer |
Определяет метод Compare() для сравнения объектов, хранящихся в коллекции |
Продолжение таблицы 2
IDictionary |
Определяет коллекцию, состоящую из пар "ключ-значение" |
IDictionaryEnumerator |
Определяет перечислитель для коллекции, реализующей интерфейс IDictionary |
IEnumerable |
Определяет метод GetEnumerator (), предоставляющий перечислитель для любого класса коллекции |
IEnumerator |
Предоставляет методы, позволяющие получать содержимое коллекции по очереди |
IEqualityComparer |
Сравнивает два объекта на предмет равенства |
IHashCodeProvider |
Считается устаревшим. Вместо него следует использовать интерфейс IEqualityComparer |
IList |
Определяет коллекцию, доступ к которой можно получить с помощью индексатора |
IStructuraIComparable |
Определяет метод CompareTo(), применяемый для структурного сравнения |
IStructuralEquatable |
Определяет метод Equals(), применяемый для выяснения структурного, а не ссылочного равенства. Кроме того, определяет метод GetHashCode() |
Структура DictionaryEntry
В пространстве имен System.Collections определена структура DictionaryEntry. Необобщенные коллекции пар "ключ-значение" сохраняют эти пары в объекте типа DictionaryEntry. В данной структуре определяются два следующих свойства:
public object Key { get; set; } public object Value { get; set; } |
Эти свойства служат для доступа к ключу или значению, связанному с элементом коллекции. Объект типа DictionaryEntry может быть сконструирован с помощью конструктора:
public DictionaryEntry(object key, object value) |
где key обозначает ключ, a value — значение. [2]
Классы необобщенных коллекций
Ниже приведены классы необобщенных коллекций: [2]
ArrayList
Определяет динамический массив, т.е. такой массив, который может при необходимости увеличивать свой размер.
Hashtable
Определяет хеш-таблицу для пар "ключ-значение".
Queue
Определяет очередь, или список, действующий по принципу "первым пришел — первым обслужен".
SortedList
Определяет отсортированный список пар "ключ-значение".
Stack
Определяет стек, или список, действующий по принципу "первым пришел — последним обслужен".
