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

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

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

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

Уозп(", ", (Яков к 1п пивЬегз огбегву к зе1еее к.тозег1пд() ) .Тодггау() ) ); Наиболее интересная часть кода выделена полужирным. В единственном операторе все элементы коллекции ппвЬегз отправляются на консоль, разделяя их запятыми и сортируя в порядке возрастания. Разве не здорово? Это работает так, что выражение запроса вычисляется немедленно, поскольку на нем вызывается расширяющий метод Тойггау, который позволяет преобразовать результаты запроса в массив.

Поэтому здесь исчезает типичная конструкция Тогеасп. Статический метод Бсг1пд.вогане следует путать с Ы(ЯЯ-конструкцией 9 сап или расширяющим методом Яо1п, который получается при использовании пространства имен яузсеп. 11пд. Этот метод берет первый параметр — строку (в данном случае содержащую запятую), посредством которой затем соединяет элементы массива строк. выстраивая одну длинную строку, где содержатся все элементы массива, разделенные запятыми. Результат, полученный от Бг гапд.

Яо1п, просто передается вызову Сопзо1е. Хг1сеЫпе. Нв заметку! Вообще говоря, ЫМО для С№ стал тем, чем является стандартная библиотека шаблонов ЗТ1 для С++. Когда ЗТС появилась впервые в начале 90-х годов, она действительно заставила программистов С++ мыслить более функционально. Это определенно было подобно глотку свежего воздуха. 1(МО создал такой же эффект для С№, и со временем наверняка появятся все более и более изощренные применения приемов функционального программирования на основе 0(НО.

Например, если программист С++ эффективно использует ЗТС, то у него редко возникает потребность в цикле Тог, поскольку ЗТЬ предоставляет алгоритмы, позволяющие передать функцию в алгоритм вместе с коллекцией, над которой нужно провести операцию, и применяющие эту функцию к каждому элементу коллекции. Эта техника удивительно эффективна. Одна из причин состоит в том, что циклы Тог — это место, где часто допускаются непреднамеренные ошибки диапазона. Разумеется, ключевое слово С№ гогеасЬ также помогает избежать этой проблемы. Ый0: язык интегрированных запросов 555 Хорошо подумав, вы, скорее всего, сможете заменить почти любой блок 1огеасп в программе выражением запроса ЫгЩ.

Возможно. так поступать не стоит, но это является замечательным уприкнением для ума в области функционального программирования. Резюме Язык ЫМЯ представляет собой кульминацию болыпинства средств, добавленных в СЗ 3.0. Или, если посмотреть под другим углом, большинство новых средств СМ 3.0 произрастают из ЫМЯ. В этой главе был показан базовый синтаксис запросов ЫМЯ, включая то, как выражения запросов Ыгхьк в конечном итоге компилируются в цепочку вызовов расширяющих методов, известных как стандартные операции запроса. Кроме того, были описаны все новые ключевые слова СЕ, предназначенные для построения выражений ЫМЯ. Хотя использовать выражения запросов ЫМЯ не обязательно, и можно отдать предпочтение непосредственному вызову расширяющих методов, они определенно повышают читабельность кода.

Также было показано, что при реализации стандартных операций запросов на типах коллекций, которые не реализуют 1Ео~лпегзЬ1е, может не быть воэможности применять выражения запросов ЬПттьг. В главе была раскрыта польза "ленивого" вычисления, или отложенного выполнения, которое интенсивно используется библиотекой, предоставляющей стандартные операции ЬПЧЯ в типах 1Епспгегао1е и 10оегуаЬ1е. И, наконец, глава была завершена объяснением того, как применять концепцию "ленивого" вычисления при определении собственных пользовательских реализаций стандартных операций запросов. ЫМьт — настолько обширная тема, что невозможно охватить все нюансы в одной главе, например, рассматривалась только разновидность ьппх1ьт то ОьЛесгз, но не затронуты ымЯ то Быть, ьпт1Я го хмь, ымЯ 1о эа1абек и ымьт го епппеэ.

Языку ьпньт посвящены отдельные книги. Вдобавок настоятельно рекомендуется почаще обращаться к документации по ЫМЯ в МБОХ. Дополнительно стоит почитать книгу Джозефа Раттца-мл. ЫМьг: язык интегрированных запросов в СФ 2008 для прокбессионалое (ИД "Вильямс", 2008 с). В следующей главе будет представлено одно из наиболее замечательных средств, добавленных в язык СФ 4.0.

Это новый тип бупаат.с, который, среди прочего, уравнял язык СЕ с МэиэЛ Вавтс в отношении возможности взаимодействия. глава 1? Динамические типы в ажность типов и их безопасности неоднократно подчеркивалась на протяжении всей книги. В конце концов, СВ является строго типизированным языков, и наивысшей эффективности можно достигнуть при использовании системы типов Св вместе с компилятором для исключения любых программных ошибок на ранней стадии, те. во время компиляции, а не на поздней — во время выполнения. Однако существуют некоторые области, где статическая, строго типизированная природа СВ создает проблемы. К ним относится возможность взаимодействия.

В этой главе рассматривается динамический (с!упаиз.с) тип, появившийся СВ 4.0, поэтому будет подробно рассказано, что он собой представляет как с точки зрения языка, так и с точки зрения исполняющей системы. Что означает динамический? По сути. с!упася1с — это статический тип, который можно использовать почти в любом месте, где мог бы примениться статический тип. Однако, он особенный, потому что позволяет сообщить компилятору, что вы не уверены точно в том, на какой тип он ссылается, и все неразрешимые решения относительно типа откладываются на время выполнения.

Экземпляру Пупаясас можно также присвоить любой ссылочный тип или тип значения. "За кулисами" компилятор вместе с исполняющей системой динамического языка (Рупапцс 1лпяпаяе Випцтпе — РЫс)' реализует всю магию по откладыванию работы до времени выполнения. Нв заметку! Четко отличайте динамические типы и неявно типизированные локальные переменные (обьявленные с помощью ключевого слова чаг). Неявно типизированные локальные переменные являются строго типизированными, даже невзирая на то, что не приходится набирать полное имя типа, к которому они относятся. Экземпляры с!упзвас на самом деле динамичны и обычно разрешаются во время выполнения, Постарайтесь избежать этой потенциальной путаницы. Чаще всего во время программирования на Са приходится иметь дело со статическими типами .НЕТ, которые могут быть закодированы также и на Са.

С++/СЫ и тп. Но что. если придется взаимодействовать с типами, которые созданы динамическими языками, такими как 1гопрутйоп или !гопйпЬу? Или же потребуется работать с объектами СОМ, реализующими 101зрассп для поддержки автоматизации через интерфейсы позднего связывания? ' Среда РЬЕ лежит в основе динамических языков на базе .НЕТ, таких как !гопрутлоп и !топнцЬу. Она предоставляет окружение, в котором легко реализовать динамические языки, а также добавлять динамические возможности статически типизированным зыкам вроде СВ. Подробные сведения о ЕНЛ ищите в документации по МАРН.

558 Глава! 7 Рассмотрим для начала взаимодействие СОМ/101врасЬ. Вдобавок предположим, что речь идет о реализациях 101 вра С сЬ позднего связывания, а не реализациях вуального интерфейса. В С№ 3.0 приходилось полагаться на огромные объемы рефлексии для динамического вызова методов и свойств экземпляра, что было крайне запутано и неестественно. При этом "за кулисами" происходило следующее: объект Еип1йпе СайаЫе Аугаррег (ВС%). выполняющий функции иронси между исполняющей системой .МЕР и объектом СОМ, тРанслиРовал опеРации рефлексии в операции 101врассь. Это позволяет осуществлнть рефлексию через объект сОм, реализующий интерфейс автоматизации 101врассь. При использовании ЧВ.МЕТ вместо С№ 3.0 впечатление было намного приятнее, поскольку ЪВ.)ь(ЕТ ограждает от всей работы, связанной с рефлексией.

С появлением в С№ 4.0 поддержки типа п(упавсс и среды ОЬК, функциональность С№ в отношении рабаты с динамически типизованными объектами сравнялась с ЧВ.ХЕТ. Чтобы лучше проиллюстрировать сказанное, рассмотрим небольшой пример. Предположим. что требуется создать новый документ Ехсе1 с некоторым текстом в его первой ячейке. Вдобавок, в целях эксперимента воспользуемся только интерфейсами 101зрагсЬ позднего связывания. Если вы знакомы с кодированием для приложений ОГйсе, таких как Ехсе1, забудьте на минуту о существовании сборок рт(пьаху !и!егор АззешЬйев (Р1А).

Пример кода на С№ 3.0 может выглядеть следующим образом; изьлд Яувгев; нвьлд Яувгев.нег1есгьол) вгагьс с1авв ЕлггуРоьлг ( вгагьс чоьб Маьл() ( /7 Создать экземпляр Ехсе1 Туре х1АррТуре = Туре.аегтурерговРгоо10( "Ехсе1.Арр11сагьол" ) оЬ)есг х1 = АсС1чвгог.Сгеаге1лвгапсе( х1АррТуре ); 7/ Сделать Ехсе1 видимым х1.0егтуре О .1лчо)ьеМевЬег( "Ч1в1Ь1е", В1лб1лаР1аав.зеСРгореггу, лч11, х1, лен оЬЯесг() ( сгсе ) ); /l Создать новую рабочую книгу оъ)есс ногхъоохв = х1.6естуре О .1лчо)семевъег( твогкьоохв", Вслб1пду1вдв.аегргореггу, лч11, х1, пч11 )7 ног)гЬоогв.аегтуре().1лчо)ьеневЬег( "Абб", В1лб1лЧР1адв.1лногенеСЬоб, пи11, ногкЬоохв лен оЬ)есг[) ( -4167 ) // Установить значение первой ячейки оЬЯесг се11 = х1.0еСТуре().1лчогемевЬег( "Се11в", Вглб1паР1адз.аеСРгореггу, лс11, х1, пен оЬЯесг(1 ( 1, 1 ) се11.6егтуре О .1лчогеневЬег( "Ча1се2", В1лб1лдР1эдв.зеСРгореггу, ла11, се11, лен оЬ)ест() ( "С№ Носка!" ) Сопво1е.нгьгеььле( "Нажмите Елгег для продолжения..." )~ Солзо1е.невбв1ле О 7 ) Динамические типы 559 Трудно не согласиться с тем, что стиль кодирования является неуклюжим н аапутанным.

С первого взгляда на код непросто определить, какие методы н свойства объектов Ехсе1 на самом деле вызываются. После создания новый экземпляр приложения делается видимым, затем за счет обращения к свойству Нот)сЬоо)ся создается новая рабочая книга и, наконец, в первую ячейку помещаются некоторые данные. Теперь рассмотрим новый усовершенствованный способ выполнения той же задачи в С№ 4.0 с применением типа булавке; оя1по Яуятев; ятатта а1аяя ЕпттуРотпт ( ятатта чотб Ма1п() // Создать экземпляр Ехае1 Туре х1Арртуре = туре.яеттурерговртоо10( "ехсе1.Арр11саг1оп" ); булавка х1 = Асттчатот.Стеасе1пятапсе( х1АррТуре УУ Сделать Ехсе1 аиднммм х1.У1я1Ь1е = огне; /7 Создать новую рабочую книгу бупав1а нот)спооия = х1.иот)споо)ся1 ног)спооия.пбб( -4167 ): уу установить значение новой ячейки х1.Се11я(1, 1].()а1пе2 = "С№ копия! Ч Сопяо1е.игттеььпе( "Нажмите Ептег для продолжения..." )> сопяо1е.неабьтпе О 7 ) ) Такой код понять намного проще.

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

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