![]() Главная страница Случайная лекция ![]() Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика ![]() Мы поможем в написании ваших работ! |
Задание 2. В рассмотренном ранее примере событие не имело аргументов
В рассмотренном ранее примере событие не имело аргументов. Если событие имеет аргументы для них потребуется объект. В NET для этой цели существует стандартный класс EventArg, но он не имеет членов. Он предназначен исключительно для передачи аргументов объекта обработчикам событий. Представьте себе банк, в который Вы приходите и говорите, что хотите открыть счет. Мы не будем вдаваться во все детали реальной жизни, поскольку ни к чему. Будем считать, что для открытия счета сума первого вноса должна состоять не меньше 0$. Если будет введена сума меньше 0$, возбудим событие. Так же, при наличии открытого счета, если будет сделана попытка снять больше денег, чем на счету, возбудим событие. С идеей разобрались, по этому, приступим. Как уже было сказано, что перед использованием события нужно определить связанный с ним класс делегата: public delegate void MyDelegate(object user, SecurytyMonitor ment);Первый параметр, это объект, который возбудил событие, второй параметр, это обьект класса SecurytyMonitor который унаследован от класса EventArgs. А вот и сам класс SecurytyMonitor: ![]() В этом классе объявлено приватное поле message, которое, как будет потом показано, используется для хранения сообщения о том, что что-то произошло. По сути дела, это класс можно считать служебным. Сообщение устанавливается в конструкторе, и получить его можно только через свойство только для чтения! Теперь приступим к написанию класса Bank: ![]() ![]() ![]() В классе SecurytyMonitor объявлено событие OnStop и класс делегата описанный ранее. Как видим, что при создание счета, происходит проверка, прежде чем наполнить счет деньгами. Так же, в этом классе определен метод, который дает возможность снять деньги со счета. В этом методе проверяется наличие денег на счету и сума, которую указал объект. Если сума больше чем денег на счету, возбуждается событие! Как в первом случае при внесение денег на счет, так и во втором, при снятие со счета, вызывается метод DoEvent(Bank b) класса SecurytyMonitor, в который передается объект класса Bank, с помощью которого, мы доступаемся к событию OnStop класса Bank, и подписываем его на метод Display() класса SecurytyMonitor. Вот клиентская часть Main(): Контрольные вопросы 1. Что такое события в языке C#? 2. Объясните синтаксис оператора посылки сообщения. 3. Проведите формат объявления события 4. Что такое переменная события? 5. Что определяет делегат, указанный в объявлении события? 6. Какие действия предусматривает подписка на события? 7. Назовите этапы работы с событиями.
Дата добавления: 2015-07-26; просмотров: 218; Нарушение авторских прав ![]() Мы поможем в написании ваших работ! |