ExpC_Module 12ru_1.ppt
- Количество слайдов: 18
Модуль 12 События и делегаты
Обзор модуля В этом модуле вы изучите n Делегаты n События Изучение C#/ Модуль 12/ 2 из 18
Занятие 1 - Делегаты На первом занятии, Делегаты, вы изучите: n Понятие делегатов. n Список особенностей и преимуществ делегирования. n Описание делегатов в C#. n Использование делегатов в приложении на C#. Изучение C#/ Модуль 12/ 3 из 18
Введение в делегирование n n n Делегаты - объекты, которые содержат ссылки на методы, которые необходимо вызвать, вместо реальных имен методов. При помощи делегатов можно вызвать любой метод, определяемый во время выполнения. Это аналогично наличию общего имени метода, указывающего на различные методы в разное время, и вызову необходимого метода во время выполнения. Изучение C#/ Модуль 12/ 4 из 18
Делегаты в C# Изучение C#/ Модуль 12/ 5 из 18
Особенности и преимущества n n Делегаты в C# имеют некоторые особенности, отличающие их от нормальных методов. К ним относятся: n Методы могут передаваться как параметры делегатам. n n Делегат может принимать блок кода как параметр. Такие блоки называются анонимными методами, так как не имеют имен методов. Делегат может вызывать одновременно несколько методов. Это называется множественной адресацией. Делегат может инкапсулировать статичные методы. Изучение C#/ Модуль 12/ 6 из 18
Объявление делегатов n Делегаты в C# объявляются с помощью Пример Синтаксис ключевого слова delegate, сопровождаемого возвращаемым типом <return_type> // Объявление делегата Calculation с возвращаемым типом// <access_modifier> delegate и параметрами иуказываемого метода. типом параметра integer. Delegate. Name([list_of_parameters]); public delegate int Calculation(int num. One, int num. Two); где, access_modifier: Указывает область видимости доступа к n Объявление делегата очень похоже на делегату. return_type: Указывает тип объявление метода, однако данных значения, здесь отсутствует возвращаемого методом. Delegate. Name: Имя делегата. реализация. list_of_parameters: Определение типов данных и имен параметров, передаваемых методу. n Выражение объявления должно оканчиваться точкой с запятой. Изучение C#/ Модуль 12/ 7 из 18
Создание экземпляров делегатов n Следующий Пример Синтаксис шаг после объявления делегата создание экземпляра и ассоциация его с // Объявляет делегат Calculation вне<Delegate. Name>(<Method. Name>); <Delegate. Name> <obj. Name> = new класса Mathematics и // создает его экземпляр в классе. требуемым Calculation (int num. One, int num. Two); public delegate intметодом. где, Mathematics class Delegate. Name: Имя делегата. { static obj. Name: Определяет имя int num. Two) int Addition(int num. One, объекта-делегата. { Method. Name: Указывает имя метода для указания с помощью n return (num. One + num. Two); объекта-делегата. Как и другие объекты, делегат создается с } помощью. Subtraction(int num. One, int num. Two) ключевого слова new. static int { return (num. One - num. Two); } static void Main(string[] args) { int val. One = 5; int val. Two = 23; Calculation obj. Calculation = new Calculation(Addition); Console. Write. Line (val. One + “ + val. Two + “ = “ + obj. Calculation (val. One, val. Two)); } Этот объект использует имя метода в качестве параметра, а его метод имеет сигнатуру, аналогичную таковой для делегата. n } Изучение C#/ Модуль 12/ 8 из 18
Использование делегатов n n Делегат может объявляться до создания класса или в самом классе. Четыре шага для реализации делегатов в C#: Объявление делегата. Создание метода для ссылки с помощью делегата. Создание экземпляра делегата. Вызов метода с помощью объекта делегата. Изучение C#/ Модуль 12/ 9 из 18
Анонимные методы n n n В C# 2. 0 представлен принцип анонимных методов. Анонимный метод - это встраиваемый блок кода, который передается как параметр делагату. С помощью анонимных методов можно избежать создания именованных методов. Изучение C#/ Модуль 12/ 10 из 18
Занятие 2 - События На последнем занятии, События, вы изучите: n Определение события. n Список особенностей и преимуществ событий. n Шаги для создания и использования событий. n Описание объявления событий в C#. n Описание подписки объектов на события. n Объяснение механизма вызова события. Изучение C#/ Модуль 12/ 11 из 18
События n События в C# позволяют объекту (источнику события) уведомлять другие объекты (подписчики) о факте события (произошедшем изменении). Изучение C#/ Модуль 12/ 12 из 18
Особенности n n Событие - сгенерированное пользователем или системой действие, позволяющее указанным обеъктам уведомить другие объекты или классы для обработки события. События в C# имеют следующие особенности: n Могут объявляться в классах и интерфейсах. n Могут объявляться абстрактными или закрытыми. n Могут объявляться виртуальными. n Реализуются с помощью делегатов. Изучение C#/ Модуль 12/ 13 из 18
Создание и использование событий n n n События в C# создаются с помощью делегатов. Делегаты широко используются для обработки событий. Четыре шага для реализации событий в C#: 1. Определение открытого (публичного) делегата для события. 2. Создание события с помощью делегата. 3. Подписка на слушание и обработку события. 4. Вызов события. Изучение C#/ Модуль 12/ 14 из 18
Объявление событий n n n Делегат объявляется с помощью ключевого слова delegate. Делегат, передающий параметры соответствующему методу, вызываемому, когда происходит событие, называется обработчиком события. Событие далее определяется с помощью ключевого слова event, с последующим указанием имени делегата и имени события. Изучение C#/ Модуль 12/ 15 из 18
Подписка на события n Для Синтаксис подписки Пример на событие, объект добавляет делегат, вызывающий метод, метода возникает § Следующий синтаксис используется объявленным когда класса получателя. // Связывает обработчик события с для созданиясобытием. public событие. delegate void Print. Details(); <access_modifier> <return_type> <Method. Name> class Event (parameters); { event Print. Details Print; § Следующий синтаксис используется для связи метода с событием nvoid Show() { Console. Write. Line(“This program illustrate how <object. Name>. <Event. Name> += new <Delegate. Name> to subscribe objects to an event”); (Method. Name); Console. Write. Line(“This method will not execute since the event has not been raised”); где, } object. Name: Это объект класса, в котором определен static void Main(string[] args) обработчик события. { Event obj. Events = new Event(); n obj. Events. Print += new Print. Details(obj. Events. Show); } } Это выполняется ассоциированием обработчика события и созданного события с помощью оператора добавляющего присваивания, что называется подпиской на событие. Чтобы отписаться от события, следует использовать оператор вычитающего присваивания. Изучение C#/ Модуль 12/ 16 из 18
Возникновение событий n n Событие Пример возникает (вызывается) для уведомления других объектов, подписанных на событие. // Проверяет условие перед возникновением события if(condition) После генерации события выполняются все { связанные обработчики события. event. Me(); } Перед вызовом события важно создать обработчики событий и тем самым убедиться, что событие ассоциировано с соответствующими обработчиками. Если событие не ассоциировано ни с одним обработчиком, объявленное событие рассматривается как null. Изучение C#/ Модуль 12/ 17 из 18
Резюме n n Делегаты в C# используются для безопасной связи с методом. События n Событие - это элемент данных, позволяющий объекту уведомлять другие объекты о конкретном событии. Изучение C#/ Модуль 12/ 18 из 18
ExpC_Module 12ru_1.ppt