Главная » Просмотр файлов » Г. Шилдт - С# 3.0 Полное руководство. 2010

Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 95

Файл №1160798 Г. Шилдт - С# 3.0 Полное руководство. 2010 (Г. Шилдт - С# 3.0 Полное руководство. 2010) 95 страницаГ. Шилдт - С# 3.0 Полное руководство. 2010 (1160798) страница 952019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 95)

Поэтому, чтобы упростить создание кода в подобных ситуациях, в среду .)ь(ЕТ Егашетчог(( встроен специальный делегат типа Ечепснапс(1ег. Он может быть использован для объявления обработчиков событий, которым не требуется дополнительная информация о событиях. Ниже приведен пример применения делегата ечепснапг(1ег. 492 Часть [, Язык Сз // Использовать встроенный делегат ЕчепСНапб1ег.

цзупч Яувгепц // Объявить класс, содержащий событие. с1авв МуЕчепС ( рцЬ11с ечепС ЕчепСНапб1ег Яощезчепг," // использовать // встроенньва делегат ЕчепСНапб1ег // этот метод вызывается для запуска события. рцвтьс чоьб ОпЯошеЕчепС() 11(зошеЕчепС [= пц11) ЯощеЕчепС(СЬ1в, Ечепгягдв.Ешргу)т ) ) с1авв Ечепгпещот ( вгаС1с чо1к[ Напб1ег(оЬ)есС воцгсе, Ечепгагчв агу) [ Оопво1е.иг1Се11пе("Произошло событие" ); Сопво1е.игхгеьтпе("Источник: " ь воцгсе)т ) вгаСЕС чо1б Ма1п () ( МуЕчепг ечС = пеи МуЕчепС()) // Добавить обработчик Напб1ег() в цепочку событий.

ечг.зощеЕчепС Ь= Напб1ег> // Запустить событие. ечг.опЯошеЕчепг()к В данном примере параметр типа ечепсйгцз ие используется, поэтому в качестве этого параметра передается объект-заполнитель ечепс)(гдэ. ещрсу. Результат выполнения кода данного примера следующий: Произошло событие Источник: МуЕчепС Практический пример обработки событий События нередко применяются в таких ориентированных иа обмен сообщениями средах, как Жшктотчв. В подобной среде программа просто ожидает до тех пор, пока не будет получено конкретное сообшеиие, а затем оиа предпринимает соответствующее действие. Такая архитектура вполне пригодна для обработки событий средствами С(), поскольку она дает возможность создавать обработчики событий для реагирования на различные сообщения и затем просто вызывать обработчик при получении конкретного сообщения.

Так, щелчок левой кнопкой мыши может быть связан с событием Евцссопс11с)т. При получеиии сообщеиия о щелчке левой кнопкой мыши вызывается метод ОпеВцссопс11с)к () и об этом событии уведомляются все зарегистрированные обработчики. Разработка программ для %'[п([о)чя, демонстрирующих такой подход, выходит за рамки этой главы, тем ие менее, рассмотрим пример, дающий представление о принципе, по которому действует данный подход.

В приведенной ниже программе создается обработ- Глава )б. Делегаты, события и ллмбда-выраженнл 493 чик событий, связанных с нажатием клавиш. Всякий раз, когда на клавиатуре нажимается клавиша, запускается событие Кеургеьь при вызове метода Опкеургеья () .

Следует заметить, что в этой программе формируются .)«)ЕТ-совместимые события и что их обрабо'гчики предоставляются в лямбда-выражениях. // Пример обработки событий, связанных с нажатием // клавиш на клавиатуре. иятпд зуьгели // Создать класс, производный от класса Ечепсагдь и // хранящий символ нажатой клавиши. с1аьь КеуЕчепсагдь: Ечепсагдь ( риЫлс снах сЫ ) // Объявить тип делегата для события. Се1едасе чохи кеунапс1ег(оптесс ьоигсе, Кеукчепсагдь агд) // Объявить класс события, связанного с нажатием // клавиши на клавиатуре.

с1аьь КеуЕчепс ( риЫлс ечепс КеуНапб1ег Кеургеььт // этот метод вызывается при нажатии клавиши. риЫЕс чолн ОпКеургеяь(снаг Хеу) ( КеуЕ«епсАгдь К = пеи КеуЕчептлгдь () т ЕГ(Кеургезь )= пи11) ( к.сп = хеут Кеургеьь(тнгь, Х)т ) ) ) // Продемонстрировать обработку события типа Кеукчепс. с1аьз КеуЕчепгрешо ( ьсасхс чотб Махи() ( Кеувчепг Хечс = пем КеуЕчепг () т Сопьо1екеу1пло Хеу; 1пс соипс = О; // Использовать лямбда-выражение для отображения // факта нажатия клавиши. ХЕЧГ.КЕуРГЕЬЬ т= (ЬОиГСЕ, ахд) лв Сопзо1е.игфсехвпе(" Получено сообщение о " + "нажатии клавиши:'" + агд.сЮ 1 О Использовать лямбда-выражение для подсчета // нажатых клавиш.

ХЕЧЫКЕуРГЕЬЬ += (ЬОиГСЕ, атд) нш соипс+тт // соипг — зто внешняя переменная сопяо1е.иглгеьлпе("Введите несколько символов. " + 494 часть (. язык сз "По завершении введите точку.") с(о ( Кеу = Сопьо1е.кеабКеу П К Кечс.опкеургеьь(геу.кеуспаг)к нн11е()сеу.КеуСЬаг )= '.'); Сооьо1е.ыг1се11ое("Было нажато " ь соиис + " клавиш.")К ) ) Вот, например, к какому результату приводит выполнение этой программы: Введите несколько символов. По Г Получено сообщение о нажатии е Получено сообщение о нажатии з Получено сообщение о нажатии Г Получено сообщение о нажатии . Получено сообщение о нажатии Была нажато 5 клавиш. завершении введите точку. клавиши: Г клавиши: е клавиши: ь клавиши: г клавиши: В самом начале этой программы объявляется класс кеукчепглгоь, производный от класса Бчепслгдз и служащий для передачи сообщения о нажатии клавиши обработчику событий. Затем объявляется делегат Кеуцапс(1ег, определяющий обработчик событий, связанный с нажатием клавиш.

Эти события инкапсулируются в классе кеукчепг, где определяется событие Кеургезз. В методе ма1п О сначала создается объект )сечс класса кеукчепс. Затем в цепочку событий )сече. кеургезз добавляется обработчик, предоставляемый лямбда-выражением. В этом обработчике отображается факт каждого нажатия клавиши, как показано ниже. хечс.кеуРгеьь += (ьоигсе, аго) => Сооьо1е.ыггсешое(" Получено сообщение о " + "нажатии клавиши: " + агс.св)к Далее в цепочку событий )сечС.Кеургезз добавляется еще один обработчик, предоставляемый лямбда-выражением.

В этом обработчике подсчитывается количество нажатых клавиш, как показано ниже. Хечг.кеуРгеьь += (ьоигсе, аг9) => соиос++; // соиос — зто внешняя переменная Обратите внимание на то, что соипс является локальной переменной, объявленной в методе Иа1п () и инициализированной нулевым значением. Далее начинает выполняться цикл, в котором метод )сече. ОпКеургезз () вызывается при нажатии клавиши. Об этом событии уведомляются все зарегистрированные обработчики событий. По окончании цикла отображается количество нажатых клавиш.

Несмотря на всю свою простоту, данный пример наглядно демонстрирует саму суть обработки событий средствами С(). Аналогичный подход может быть использован и для обработки других событий. Безусловно, в некоторых случаях анонимные обработчики событий могут оказаться непригодными, и тогда придется внедрить именованные методы. ГЛАВА Пространства имен, препроцессор и сборки в атой главе речь пойдет о трех средствах С№, позволяющих улучшить организованность и доступность программы. Этими средствами являются пространства имен, препроцессори сборки. Пространства имен О пространстве имен уже вкратце упоминалось в главе 2 в связи с тем, что это основополагающее понятие для С№. В действительности пространство имен в той или иной степени используется в каждой программе на С№.

Потребность в подробном рассмотрении пространств имен не возникала до сих пор потому, что для каждой программы на С№ автоматически предоставляется используемое по умолчанию глобальное пространство имен. Следовательно, в примерах программ, представленных в предыдущих главах, использовалось глобальное пространство имен. Но во многих реальных программах приходится создавать собственные пространства имен или же организовать взаимодействие с другими пространствами имен. Подобные пространства будут представлены далее во всех подробностях.

Пространство имея определяет область объявлений, в которой допускается хранить одно множество имен отдельно от другого. По существу, имена, объявленные в одном пространстне имен, не будут вступать в конфликт с аналогичными именами, объявленными в другой области. Так, в библиотеке классов для среды .НЕТ Ргашеи огК которая одновременно является библиотекой классов С№, используется пространство имен зузсев. Именно поэтому строка кода изгпд зузселп обычно вводится в самом начале любой программы на С№. Как пояснялось в главе 14, классы ввода-вывода определены в пространстве имен яузгев.

10, подчиненном пространству имен зузгеаь Ему подчинены и многие другие пространства имен, относящиеся в разным частям библиотеки классов С№. 496 Часть!. Язык С» Пространства имен важны потому, что за последние годы в программировании "расплодились" в огромном количестве имена переменных, методов, свойств и классов, применяемых в библиотечных программах, стороннем и собственном коде. Поэтому без отдельных пространств все эти имена будут соперничать за место в глобальном пространстве имен, порождая конфликтные ситуации.

Так, если в программе определен класс ръпс(ег, то этот класс может вступить в конфликт с другим классом Гъпдег, доступным в сторонней библиотеке, используемой в этой программе. К счастью, подобного конфликта можно избежать, используя отдельные пространства имен, ограничивающие область видимости имен, объявленных в них. Объявление пространства имен Пространство имен объявляется с помощью ключевого слова паюеэрасе. Ниже приведена общая форма объявления пространства имен.

паюеврасе имя ( // члены ) где имя обозначает конкретное имя объявляемого пространства имен. При объявлении пространства имен определяется область его действия. Все, что объявляется непосредственно в этом пространстве, оказывается в пределах его области действия. В пространстве имен можно объявить классы, структуры, делегаты, перечисления, интерфейсы или другие пространства имен.

Характеристики

Тип файла
DJVU-файл
Размер
6,78 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Г. Шилдт - С# 3.0 Полное руководство
C_sharp_3TCR_code
Apndx.lst
Chap2.lst
Chap3.lst
Chap4.lst
Chap5.lst
Chap6.lst
Chap7.lst
Chap8.lst
Chap9.lst
Chap10.lst
Chap11.lst
Chap12.lst
Chap13.lst
Chap14.lst
Chap15.lst
Chap16.lst
Chap17.lst
Chap18.lst
Chap19.lst
Chap20.lst
Chap21.lst
Chap22.lst
Chap23.lst
Chap24.lst
Chap25.lst
Chap26.lst
Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6472
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее