Например, оператор foreach опрашивает объект, на предмет того, реализует ли он интерфейс System.Collection.IEnumerable.
Если Вы подготовили объект с этим интерфейсом, то оператор foreach будет успешно использовать Ваш метод GetEnumerator(). Этот метод возвратит объект с методом MoveNext() и свойством Current для доступа к очередному элементу коллекции.
Если окажется, что объект не реализует требуемый интерфейс, foreach сгенерирует исключение.
Интерфейсы коллекций
В С# под коллекцией понимается группа объектов. Пространство имен System. Collections содержит множество интерфейсов и классов, которые определяют и реализуют коллекции различных типов. Все эти коллекции разработаны на основе набора четко определенных интерфейсов.
Ряд встроенных реализаций интерфейсов в таких коллекциях как ArrayList, Hashtable, Stack и Queue, вы можете использовать "как есть".
У каждого программиста также есть возможность реализовать собственную коллекцию, но в большинстве случаев достаточно встроенных.
Среда .NET Framework поддерживает три основных типа коллекций:
• общего назначения,
• специализированные,
• ориентированные на побитовую организацию данных.
Коллекции общего назначения реализуют ряд основных структур данных, включая динамический массив, стек и очередь. Сюда также относятся словари, предназначенные для хранения пар ключ/значение. Коллекции общего назначения работают с данными типа object, поэтому их можно использовать для хранения данных любого типа.
Мощь коллекций состоит в том, что они могут хранить не только встроенные типы, но и объекты любого типа, включая объекты классов, создаваемых программистами.
Коллекции специального назначения ориентированы на обработку данных конкретного типа или на обработку уникальным способом. Например, существуют специализированные коллекции, предназначенные только для обработки строк или однонаправленного списка.
Классы коллекций, ориентированных на побитовую организацию данных, служат для хранения групп битов. Коллекции этой категории поддерживают такой набор операций, который не характерен для коллекций других типов. Например, в известной многим биториентированной коллекции BitArray определены такие побитовые операции, как И и исключающее ИЛИ.
Таблица. Интерфейсы коллекций
Интерфейс | Описание |
IEnumerable | Определяет метод GetEnumerator(), который поддерживает перечислитель для любого класса коллекции |
IEnumerator | Содержит методы, которые позволяют поэлементно получать содержимое коллекции |
ICollection | Определяет элементы, которые должны иметь все коллекции |
IList | Определяет коллекцию, к которой можно получить доступ посредством индексатора |
IDictionary | Определяет коллекцию, которая состоит из пар ключ/значение |
IDictionaryEnumerator | Определяет перечислитель для коллекции, которая реализует интерфейс IDictionary |
IComparer | Определяет метод compare(), который выполняет сравнение объектов, хранимых в коллекции |
IHashCodeProvider | Определяет хеш-функцию |
Дата добавления: 2019-02-08; просмотров: 645;