на начало
На главную страницу
Форум   

Статья :: Объединение экземпляров делегатов


Объединение экземпляров делегатов

Несколько делегатов можно объединить в один так, чтобы результирующий делегат имел список вызываемых методов. При вызове подобного делегата будут вызваны по очереди все методы, содержащиеся в списке вызываемых методов этого делегата. Полезным свойством делегатов является возможность объединять списки вызываемых делегатом методов и удалять методы из таких списков. Для этого используются статические методы Delegate: :Combine (Делегат::Объединение) и Delegate: :Remove (Делегат::Удалить). Кроме того, для класса Delegate (Делегат) операторы += и -= перегружены так, чтобы обеспечить сокращенный синтаксис добавления и удаления методов.

// псевдокод: pCurrDlg = pCustDlg + pBankDlg
pCurrDlg = static_cast<NotifyCallback *>(
Delegate::Combine(pCustDlg, pBankDlg)); // Делегат::Объединение
// дополнительный код: pCurrDlg - = pBankDlg
pCurrDlg = static_cast<NotifyCallback *>(
Delegate::Remove(pCurrDlg, pBankDlg)); // Делегат::Удалить
// дополнительный код: pCurrDlg + = plnstDlg
pCurrDlg = static_cast<NotifyCallback *>(
Delegate::Combine(pCurrDlg, plnstDlg)); // Делегат: Объединение

В этом примере мы создаем два экземпляра делегатов для статических методов и один — для метода экземпляра класса. Пример демонстрирует некоторые возможности добавления методов в список и удаления их из него, а также вызов методов, связанных с делегатом. Этот пример, с подробным описанием важных аспектов использования делегатов, приведен в следующем разделе главы.


Объединение экземпляров делегатов

страницы в данном разделе 
Глава 5. Управляемый C++ в .NET Framework Управляемый C++ в .NET Framework
Объект системы: System::Object Общедоступные методы экземпляров класса Object (Объект)
Защищенные методы экземпляров класса object (Объект) Родовые интерфейсы и обычное поведение
Использование методов класса object (Объект) в классе Customer (Клиент) Коллекции
Пример класса ArrayList (Список массивов) Интерфейсы
Основные сведения об интерфейсах Программирование с использованием интерфейсов
Динамическое использование интерфейсов Программа Бюро путешествий Acme (Acme Travel Agency)
Явное определение интерфейсов Родовые интерфейсы в .NET
Интерфейсы коллекций Копирование объектов и интерфейс icioneable
Сравнение объектов Что такое каркасы приложений
Делегаты Объявление делегата
Определение метода Создание экземпляра делегата
Вызов делегата Объединение экземпляров делегатов
Полный пример Моделирование фондовой биржи
События События в управляемом C++ и .NET
Описание сервера Описание клиента
Комната для дискуссий: пример чат-программы Резюме


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста