Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры C#.doc
Скачиваний:
16
Добавлен:
22.09.2019
Размер:
472.58 Кб
Скачать

31.Коллекции. Классы коллекций общего назначения.

С помощью интерфейсов можно реализовать не только множественное наследование, но и разработать коллекции классов. Коллекции упрощают программирование, предлагая уже готовые решения для построения структур данных, разработка кот. «с нуля» отлич-ся большой трудоемкостью. Слова коллекции, семейства, контейнеры – это слова-синонимы. самая примитивная коллекция – это System.Array. но ограничение этой коллекции состоит в том, что невозможно динамически управлять размером массива при добавлении или удалении элементов. Коллекции реализуют технологию обобщенного пр-мирования. Оно появилось еще в языке С++. Целью обобщенного пр-мирования явл. создание прграммного кода, независимо от типов данных. Для этого были разработаны шаблоны типов данных. Наиболее употребляемые: стеки, списки, очереди, векторы, а также алгоритмы их обработки были помещены в стандартную библиотеку шаблонов STL. Ее авторы- Алекс Степанов, Мен Ли. В новой технологии .NET как таковой библиотеки нет, а им-ся классы коллекции. Среда .NET поддерживает 3осн.типа коллекции:-общего назначения,-специализированные,-ориентированные на побитовую организацию данных.

Классы коллекций общего назначения. Служат для временного хранения данных во время работы пр-мы, реализуют осн.структуры данных: динамический массив, стек, очередь. Очередь – последовательный набор элементов одногои того же типа, кот. может сокращ-ся с одного конца(начала очереди), а расширяться с другого(конца очереди). В любой момент времени доступен только один элемент, кот. нах-ся в начале очереди. Удаляется тот элемент, кот. был первым. Очереди исп-ся в СУБД, в Интернете, в Моделировании. К-ции общего назначения раб. С данными типа object. К-ции спец назнач. – ориентированы на обработку данных конкретного типа, или на обработку данных уникальным способом. К-ции ориентированные на побитовую орг-ю данных служат для хранения групп битов и исп-т только побитовые операции:сдвиг вправо, влево. Они примен-ся для разработки драйверов.

32.Делегаты. Назначение делегатов. Многоадресатная передача.

При прогр-нии под Windows по С и С++ осн. ср-во для решения проблемы: как созданные объекты смогут посылать аналоги. сообщения тем объектам, кот. их породили. Это ф-ция обратного вызова ( Callback function или просто Callback), кот. основана на исп-нии указателей на ф-ции в операт. памяти. При помощи этого ср-ва программист может обеспечить возможность обратного вызова одной функцией другой. Указатель на ф-цию – всего лишь адрес в операт. памяти. Было бы проще, если вместо «голого» адреса была бы какая-н. конструкция, кот. могла бы проверять при выполнении обратного вызова и кол-во передаваемых параметров и их тип, и возвращаемое значение. В С# такое ср-во наз.делегатом и вып. те же действия, что и указатель на ф-цию, но гораздо более безопасными и лучше соотв-ми пр-пами объектно-ориентир-го прогр-я. Делегат – объект, кот.может ссылаться на метод. При создании делегата в С# указывается не только имя метода, но и набор передаваемых ф-ции параметров (если они есть), и возвращаемое ф-цией значение. Делегат – спец.класс в С#. Делегаты ссылаются на один метод и определяются в период выполнения. Они широко примен. для асинхронной обработки и добавления нестанд. кода к коду классов. Делегаты могут исп.для многих целей, включая методы обратного вызова, определение статических методов и обработку событий. Тип делегата определяется сигнатурой метода, кот.м.б. вызван ч-з каждый конкретный экземпляр. Делегат можно использовать как обычную переменную. Вызов делегата такой же как и вызов обычной ф-ции. Делегат объявляется с пом. ключ. слова delegate. Общая форма:

Delegate тип возврата имя (список_параметров) Здесь тип возврата представляет собой тип значений, возвращаемых методами, кот. делегат этот будут описывать. Делегат может вызывать только такие методы, у кот. тип возвращаемого значения и список параметров совпадает с соотв. эл-ми объявления делегата. Многоадресная передача. Одна из самых интересных возможностей делегата – поддержка многоадресной передачи – это СП-сть созд.список вызовов, методов, кот. должны автомат. вызываться при вызове делегата. Достаточно создать экземпляр делегата, а затем для добавления методов в эту цепочку использовать оператор «+=». Для удаления метода из цепочки - «-=». Делегат с многоадресной передачей имеет одно ограничение: он должен возвращать тип void.