Главная » Просмотр файлов » Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010)

Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (1160865), страница 150

Файл №1160865 Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (Нэш Трей - C# 2010. Ускоренный курс для профессионалов (2010)) 150 страницаНэш Трей - C# 2010. Ускоренный курс для профессионалов (2010) (1160865) страница 1502019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Вызов №1 соответствует перегрузке, принимающей с1опЬ1е. Причина в том, что перегрузка. принимающая ).пС, не является общедоступной, и параметр 1пс неявно преобразуется в с)опЬ1е. Место вызова служит инструментом для выбора необходимой перегрузки во время выполнения на основе информации, полученной им от компилятора. Теперь рассмотрим одно небольшое, но существенное изменение в приведенном выше коде: с1авя С риЫ1с чогб Ргосевв1прпС( спг х ) ( Сопяо1е.ыггэе) ьпе ( "1пс: " т х.ТоЯСг1пд() ) т ) рпыгс чосб Ргосевв1прос( всггпд ивд ) ( Сопво1е.ыгггесгпе ( "вггбпд: " т ивд ) т ) чогб Ргосевв1прпС( боиЫе б ) ( Сопво1е.вг1Сесспе( "бопЫе: " + б.тояггспд() ) ) Обратите внимание, что перегрузка, принимающая Епс, сделана общедоступной, а перегрузка, принимающая бопЫе, — приватной.

Как вы думаете, какая перегрузка будет выбрана теперь во время выполнениа7 Вывод, полученный в результате запуска этого модифицированного примера, показан ниже: спС: 123 вггбпд: С№ Еосхв! Опиапб1еб ЕхсерС1оп: МссговоГС.СЯЬегр.аипС1аевспбег.кппгсаевспбегххсерссоп: 'С.Ргосевв1прпС(бооЫе)' Тв гпэссеввТЫе бее со ТСв ргогесггоп 1ече1 ас са11$1се.тэгдес(с1овпге, са11$1се, оъ)есс, Оь3есс ) эс яузсеа. Оупеисс .

Орбасепе1едасев .Орбеселпбехесисечогб2 (тО, т1 ) (са11$1се всее, ТО агдп, Т1 вгд1) вс епсгурогпс.мвтп() Тп бупеебс регия 2.св:11пе 30 Необработанное исключение: ИбсгояоГС.СЯЬагр.лолг1эеВ1лдег.лилг1юеВблдеггхсергголк С.Ргосеяя1лрог (доиЫе) не доступен ив"зе уровня вав(иты в Са11$1Се. Тагдег(С1овиге, Се11$1ге, ОЬ)есС, ОЬ1есг ) в Яуя сею.

Оупвюбс. Ордесебе1еда сея. Орде селлбехесисеиобд2 (тб, т1 ) (са11яб се ябге, ТО егдб, Т1 агд1) в ЕлггуРоглг.набл 0 в дупаю1с радия 2. ся:строка 30 564 Глава! 7 Исполняющей системе не удалось обнаружить правильную перегрузку для вызова ВЗ. Причина связана с отсутствием общедоступной перегрузки, которая принимала бы боцЬ1е, а боцЬ1е не может быть неявно преобразовано ни к одному из типов, принимаемых доступными перегрузками.

Объекты со специальным динамическим поведением Целью для динамических экземпляров могут быть объекты, которые реализуют интерфейс 1Оупав1смегабь> есгргоч1бег. В вашем распоряжении расширяемый механизм для создания специального динамического поведения, посредством которого определяется смысл обращения к членам динамического типа. В реальности непосредственная реализация 1 Оупавт сме ГаОЬ) е с с Ргочз бе г будет выполняться редко. Вместо этого понадобится наследовать собственный динамичесний тип от Яуясев.

Оупавтс. Оупав1сбь1есь. Класс Оупаввсбь)ест предлагает обилие виртуальных методов, которые можно переопределять для создания специального динамического поведения. на заметку! интерфейс 1Оупавзсмегабь)есгргочз бег и класс Оупав1смегабь>ест являются важнейшими типами, которые лежат в основе создания специального динамического поведения.

Но поскольку наследование от Оупав1сОЬ1есг — это рекомендованный способ создания специальных динамических объектов, два упомянутых типа по)В)обло рассматриваться не будут. Дополнительную информацию о них, а также их важной роли в динамических объектах можно найти в документации МЯОМ. Класс ОупавзсОЬ)есс, сокращенное определение которого показано ниже, имеет множество методов, которые можно переопределить: риЫ1с с1аяя Оупав1сОЬчесс: 1ОупавзсМетаОЬ)есГРгсч1бег ( рпЫтс чтгтпа1 1ЕппветаЫе<ятгзпд> бегоупав1сМевьегиавея () з рпызс ч1гтса1 Оупавзсмегабь)ест бегмегабъзест(ехргеяятоп рагаветег)з риЫзс ч1гсиа1 Ьоо1 ТгуВтпагубрегастоп(ВзпагубрегасзопВтпбег Ьгпбег, сЬ)ест атб, ссг оЬ)есг геяи1г)з риыгс чзгтпа1 ьоо1 ттусопчетт(сопчеггв1пбег ыпбег, спт оь)ест геяп1г)з рпЫ1с чзгспа1 Ьоо1 ТгуСгеасе1пятапсе(Стеасе1пятапсеВтпбег Ьтпбег, оь)ест[) агся, спг оь]есг геяп1т)з рпЫтс чзгтпа1 Ьоо1 Тгусе1есе1пбех(Ое1ете1пбехВзпбег Ыпбег, оЬЯесг[) тпбехея); рпЫзс чзггпа1 Ьсо1 Тгуое1етеневЬег(Ое1есеМевЬегВзпбег Ыпбег)з рпЫтс ч1гтиа1 Ьсо1 Ттубес1пбех(бет1пбехВ1пбег Ыпбег, оЬ)есс[) 1пбехея, стт оЬ)ест геяп11)з рпызс ч1гтпа1 ьоо1 тгубесмевьег(бегмевьегВзпбег ыпбег, опт оь)есг геяп1г)з рпЫ1с нзтспа1 Ьоо1 Тгу1пчоке(1пчокеВзпбег Ыпбег, оь)ест[) агбя, опт оЬ)ест теяи1т)з риЫтс чзгтиа1 Ьос1 Тгу1пчокеМевЬег(1пнохеиевЬегВ1пдег Ьзпбег, сь)ест[) агоя, опт оь)есг геяп11)з рпЫзс чзгтса1 Ьсс1 ТгуБес1пбех(яес1пбехВзпбег Ыпбег, сЬ)есс[) зпбехея, оЬ)ест ча1пе)з рпЬ11с ч1ттпа1 Ьоо1 ТтубетмевЬег(БесиевЬетВзпбег Ь1пбег, оЬ)есс ча1ие); рсЫ1с нз гтпа1 Ьоо1 Ттубпагубрегат1оп Гзпагубретас1опВз пбег Ыпбег, оиг оь)ест геяп1г)з Динамические типы 565 Имена методов начинаются со слова Тту, потому что место вызова с помощью обращения к этим методам выясняет у динамического типа, может ли он выполнить конкретную операцию.

Если это так, метод возвращает тгпе. В противном случае, если метод возвращает Та1яе, место вызова определит поведение, которое часто выражается в генерации исключения. Все стандартные реализации этих методов возвращают Та1зе. Ниже показан очень поверхностный пример, в котором демонстрируется использование типа, унаследованного от РупавтсОЬ3 ест: пя1пс2 Яуятев; пятну Яуятеш.Оупав1с; иятпс3 Яуятеш.Со11естуопя.Оепет1с; с1аяя МуОупавгсТуре: ОупввтсОЬ)ест ( рпЫгс очетттбе Ьоо1 Тгу1пчотеиешЬег( 1пчонемевЬегВгпбет Ьтпбет, оЬ)ест() агс3з, опт оЬ3ест геян1Г ) ( теяп1С = пп11; Сопяо1е.нтттеьтпе( "динамический вызов " т ОетТуре() " .

" е Ыпбег . Мазе е " () " ) ' гетпгп гтпе; ! рпь1гс очеггтбе ьоо1 тгуяегмешьег( яетмевьегВтпбет ъгпбет, оЬ3ест Ча1пе ) ( Сопяо1е.ыгттеьтпе( "Динамическая установка свойства " т ОеГТуре() "." т Ыпс(ет.наше т " Го " э Чв1пе ); тетнгп ггпе; ) рагс чогб ОоОегап1тногн() ( Сопяо1е.нггтеьгпе( "Выполнение работы по умолчанию" ) ятвттс с1аяя Ептгуротпт ( ятат1с чогб Мвтп() ( бупав1с б = пеи МуОупвв1сТуре(): б.ОоОегап1тногн()к с(.ооиотк(); б.уа1пе = 42; б.Сопок = 123; В методе Ма1п после присваивания переменной булавке нового экземпляра Муоупяш1сТуре выполняются некоторые операции этого типа.

Обратите внимание, что первым вызывается метод ОоОеуаи1тиог)с, и тип МуОупавтсТуре действительно имеет метод по имени ОоРе тап1тмо г)с. В данном случае место вызова с помощью рефлексии замечает этот метод и вызывает его напрямую. Что касается вызова Ооиог)с, то поскольку муОупав1стуре пока не реализует Роиог)с, а реализует 1Рупашгсмегабь3есгргочтбег, наследуя от ОупавтсОЬ3ест,место вызова для выполнения операции обращается к Тгу1пчо)сеМешЬег.

В результате вывод предыдущего примера будет выглядеть следующим образом: Выполнение работы по умолчанию динамический вызов МуОупав1стуре.Ооногн() Динамическая установка свойства МуРупаш1сТуре.Чв1пе го 42 Динамическая установка свойства МуОупавтсТуре.Соппт Го 123 566 Глава (7 Как видите, ОупагпьсОЬЯ есб предлагает достаточные средства, чтобы управлять тем, что происходит во время операций над динамическими экземплярами. Например, может понадобиться создать иронси-объект некоторого рода, который будет находиться между вызывающим кодом и реализацией. Предположим, что есть приложение, которое сложным способом взаимодействует с некоторым унаследованным компонентом через Р/1пчо1ге и для выполнения одной логической операции может требовать нескольких операций Р/1пчо(ге. За счет наследования от ОупзыьсОЬЯ есс можно создать специальный динамический тип, который позволит выполнять эти сложные операции с точки зрения потребителя единственным вызовом динамического метода.

Представьте приложение. расширяемое с помощью сценариев. Предположим, что в файловой системе имеется некоторый каталог, где хранятся различные сценарии. Создавая специальный динамический тнп, можно представить каждый из этих сценариев отдельным вызовом метода. Затем пользователь, разбирающийся в сценариях, сможет легко модифицировать приложение, изменяя сценарии. Можно даже закодировать специальный динамический тип, который представляет новые динамические методы, перебирая сценарии в каталоге. Для добавления новых методов к этому динамическому типу понадобилось бы просто помещать новые сценарии в каталог.

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

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

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

Нэш Трей - C# 2010
Accelerated_C_2010-4565
3_syntax_overview
3_generics_1.cs
as_1.cs
boxing.cs
conversions_1.cs
implicit_type_1.cs
is_1.cs
references_1.cs
references_2.cs
references_3.cs
values_1.cs
4_classes_structs
4_abstract_classes_1.cs
4_beforefieldinit_1.cs
4_box_1.cs
4_box_2.cs
4_box_3.cs
4_box_4.cs
4_box_5.cs
4_class_definition_1.cs
4_compareto_1.cs
4_containment_example_1.cs
4_containment_example_2.cs
4_containment_example_3.cs
4_ctor_struct_1.cs
4_ctor_struct_2.cs
4_ctor_struct_3.cs
4_destructor_1.cs
4_destructor_2.cs
Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7029
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее