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

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 102

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

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

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

ояьпд Яуясещ( с1аяя А () с1аяя В : А () с1аяя СЬесксаяс ( яоаолс Уо1г( Ма1п () ( А а = пен А(); В Ь = пен В(); /! Проверить, можно ли привести а к типу В. 11(а 1я В) // если да, то выполнить приведение типов Ь = (В) а; е1ве УУ если нет, то пропустить приведение типов Ь = по11( ьс(Ь== отц Сопяо1е.Хгьгеъ1пе("Приведение типов Ь = (В) НВ допустимо.") е1яе Сопяо1е.иг1сеъ1пе("Приведение типов Ь = (В) допустимо."); ) ) 540 Часть (.

Язык С№ Эта программа дает следующий результат. Приведение типов Ь = (В) НЕ лопустимо. Как следует из результата выполнения приведенной выше программы, тип объекта а не совместим с типом В, и поэтому его приведение к типу В не допустимо и предотвращается в условном операторе ТТ. Но такую проверку приходится выполнять в два этапа. Сначала требуется убедиться в обоснованности операции приведения типов, а затем выполнить ее. Оба этапа могут быть объединены в один с помощью оператора ая, как демонстрирует приведенная ниже программа. Продемонстрировать применение оператора ая.

оя1пд Зуягеаи с1аяя А () с1аяя В : А () с1аяя Саесхсаяг ясасьс уоьс( наьп() ( А а = лен А(); ВЬ= пен В(); Ь = а ав В; // выполнить приведение типов, если зто возможно ТГ(Ь==по11) Сопяо1е.Хгьяеьгпе("Приведение типов Ь = (В) НЕ допустимо.") е1яе Сопяо1е.Хг1геьгпе("Приведение типов Ь = (В) попустимо."); ) ) Эта программа дает прежний результат. Приведение типов Ь = (В) НЕ допустимо. В данном варианте программы в одном и том же операторе ая сначала проверяется обоснованность операции приведения типов, а затем выполняется сама операция приведения типов, если она допустима.

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

Класс Туре довольно обширен и содержит немало членов, поэтому его рассмотрение придется отложить до следующего раздела, посвященного рефлексии. Но в качестве краткого введения в этот класс ниже приведена программа, в которой используются Глава 17. Динамическая идентификация типов, рефлексия и атрибуты 541 три его свойства: рп11Нап(е, 1ЯС1аяя и 1ЯАЬЯСгасг.

Для получения полного имени типа служит свойство т О11наве. Свойство 1ЯС1аяя возвращает логическое значение сгпе, если тип относится к классу. А свойство 1 ЯАья с гас с возвращает логическое значение сгпе, если класс является абстрактным. Продемонстрировать применение оператора суреог. пв1пч Яувсепы пв1по Яувгеы.10( с1авя Оветуреог ( вгаг1с вота Матп() ( туре с = суреог(Ясгеаыпеабег) Сопво1е.нгьгеъ1пе(с.гп11наве); 11(С.1вС1авв) Сопво1е.Хг1Секвпе("Относится к классу."); 11(С.1яАЬявгаст) Сопяо1е.Хгьтеъвпе("Является абстрактным классом.") е1ве Сопво1е.Хгьгеъьпе("Является конкретным классом."); ) ) Эта программа дает следующий результат. Яуввеы.го.явгеаыкеабег Относится к классу.

Является конкретным классом. В данной программе сначала извлекаетсл объект класса туре, описывающий тип Ябгеаыпеабег. Затем выводится полное имя этого типа данных и определяетсл его принадлежность к классу, а далее — к абстрактному или конкретному классу. Рефлексия Рефлексия — это средство, позволяющее получать сведения о типе данных. Термин рефлексия, или отражение, происходит от принципа действия этого средства: объект класса Туре отражает базовый тип, который он представляет. Для получения информации о типе данных объекту класса Туре делаются запросы, а он возвращает (отражает) обратно информацию, связанную с определяемым типом.

Рефлексия являетсл эффективным механизмом, поскольку она позволяет выявлять и использовать возможности типов данных, известные только во время выполнения. Многие классы, поддерживающие рефлексию, входят в состав прикладного интерфейса .)ь(ЕТ яеяесбоп АР1, относящегося к пространству имен Яуя С ел(. Не()есб Топ. Поэтому для применения рефлексии в код программы обычно вводится следующая строка. св1пд Яуввев.пе11есвьоп; Класс Вуе1еп(.

Туре — ядро подсистемы рефлексии Класс Яувгеы. Туре составляет ядро подсистемы рефлексии, поскольку он инкапсулирует тип данных. Он содержит многие свойства и методы, которыми можно 542 Часть (. Язык С() пользоваться для получения информации о типе данных во время выполнения. Класс Туре является производным от абстрактного класса Буясев. Ке11есс1оп. МевЬег1п1о. В классе МевЬег1п То определены приведенные ниже свойства, доступные только для чтения.

Свойство Описание Туре Рес1аг1пдтуре Тип класса или интерфейса, в котором объявляется отра- жаемый член Тип члена. Зто значение обозначает, является ли член по- лем, методом, свойством, событием или конструктором Значение, связанное к конкретными метаданными Объект типа мос(и1е, представляющий модуль (исполняе- мый файл), в котором находится отражаемый тип Имя типа Тип отражаемого объекта МетЬегТурея МевЬегТуре Тпг Месас(асаТокеп Мос)и1е Мог)и1е ягг1по Нате Туре Ке1)естес)туре Следует иметь в виду, что свойство МевЬегТуре возвращает тип МевЬегТурея— перечисление, в котором определяются значения, обозначающие различные типы членов.

К их числу относятся следующие. Метъегтурея.оопясгистог Метъегтурея.несиоо МетЬегТурея.гте1а НетЬегтурея.вчепп МетЬегтурея.Ргорегсу Метод Назначение Сопясгисгог1пто[) аеССопятгисгогя() Еиепс1пТо[) СесЕиептя() Ете1с)1пто [) Сет Е1е1с(я () Туре [) сессепегтсАгоитепся() Получает список конструкторов для заданного типа Получает список событий для заданного типа Получает список полей для заданного типа Получает список аргументов типа, связанных с закрыто сконструированным обобщенным типом, или же спи- сок параметров типа, если заданный тип определен как обобщенный. Для открыто сконструированного типа этот Следовательно, тип члена можно определить, проверив свойство МетЬегТуре. Так, если свойство метЬегтуре имеет значение метЬегтурея.

неспос(, то проверяемый член является методом. В класс мевЬег1пто входят два абстрактных метода: СесСияготлссг1Ьигея () и 1япет(пес) () . Оба метода связаны с атрибутами. Первый из них получает список специальных атрибутов, имеющих отношение к вызывающему объекту, а второй устанавливает, определен ли атрибут для вызывающего метода. В версию )х[ЕТ Етагпеигог1 'тетя(оп 4.0 внедрен метод СеГСияговдссг1Ьигеярага (), возвращающий сведения о специальных атрибутах. (Подробнее об атрибутах речь пойдет далее в этой главе.) Класс Туре добавляет немало своих собственных методов и свойств к числу тех, что определены в классе МевЬег1пто.

В качестве примера ниже перечислен ряд наиболее часто используемых методов класса туре. Б)ава 17. Динамическая идентификация типов, рефлексия и атрибуты 543 Окончание гпабпииы Метод Назначение список может содержать как аргументы, так и параметры мпа. (Более подробно обобщения рассматриваются в главе 18.) Получает список членов для заданного типа мегпЬе г1 п1о ( ) ОесмегпЬетв () Мегпос)1пго [) ЕеСМегпог)5() Ргореггу1пбо[) беСРгорегг1ез() Получает список методов для заданного типа Получает список свойств для заданного типа Далее приведен ряд наиболее часто используемых свойств, доступных только для чтения и определенных в классе Туре.

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

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

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

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6374
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее