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

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

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

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

636 Часть Е Язык С№ Когда обобщенный класс компилируется в псевдокод МБ11„он сохраняет все свои параметры типа в их обобщенной форме. А когда конкретный экземпляр класса потребуется во время выполнения программы, то 11Т-компилятор сконструирует конкретный вариант этого класса в исполняемом коде, в котором параметры типа заменяются аргументами типа. В каждом экземпляре с теми же самыми аргументами типа будет использоваться один и тот же вариант данного класса в исполняемом коде.

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

Когда же возникает потребность сконструировать объект другого типа, то компилируется новый вариант класса в исполняемом коде. Как правило, новый исполняемый вариант обобщенного класса создается для каждого объекта конструируемого типа, в котором аргумент имеет тип значения, например Тпг или ггоцые. Следовательно, в каждом объекте типа сеп<1пс> будет использоваться один исполняемый вариант класса реп, а в ках<дом объекте типа с.еп<ггоцЬ1е>— другой вариант класса реп, причем каждый вариант приспосабливается к конкретному типу значения.

Но во всех случаях, когда аргумент оказывается ссылочного типа, используется только один вариант обобщенного класса, поскольку все ссылки имеют одинаковую длину (в байтах). Такая оптимизация также исключает раздувание кода. Некоторые ограничения, присущие обобщениям Ниже перечислен ряд ограничений, которые следует иметь в виду при использовании обобщений. ° Свойства, операторы, индексаторы и события не могут быть обобщенными. Но эти элементы могут использоваться в обобщенном классе, причем с параметрами обобщенного типа этого класса.

° К обобщенному методу нельзя применять модификатор ехсегп. ° Типы указателей нельзя использовать в аргументах типа. ° Если обобщенный класс содержит поле типа зсасзс, то в объекте каждого конструируемого типа должна быль своя копия этого поля.

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

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

Поэтому освоение этого важного языкового средства стоит затраченных усилий. 638 Часть 1. Язык С№ данных. При этом синтаксис, используемый для формирования запросов, остается неизменным, независимо от типа источника данных. Это, в частности, означает, что синтаксис, требующийся для формирования запроса к реляционной базе данных, практически ничем не отличается от синтаксиса запроса данных, хранящихся в массиве. Для этой цели теперь не нужно прибегать к средствам 5(3Е или другого внешнего по отношению к СФ механизма извлечения данных из источника. Возможности формировать запросы отныне полностью интегрированы в язык С4.

Помимо 5О)., Е1М ~ можно использовать вместе с ХМ1.-файлами и наборами данных АТтО.НЕТ Оа1авеб Не менее важным является применение 1.11Щ вместе с массивами и коллекциями в СФ (подробнее рассматриваемыми в главе 25). Таким образом, средства Е1)Щ предоставляют, в целом, единообразный доступ к данным. И хотя такой принцип уже сам по себе является весьма эффектирным и новаторским, преимущества 1.1М 1 этим не ограничиваются. ЕПМД предлагает осмыслить иначе и подойти подругому к решению многих видов задач программирования, помимо традиционной организации доступа к базам данных.

И в конечном итоге многие решения могут быть выработаны на основе 11)х)О. 1.1)ЧО поддерживается целым рядом взаимосвязанных средств, включая внедренный в СФ синтаксис запросов, лямбда-выражения, анонимные типы и методы расширения. О лямбда-выражениях речь уже шла в главе 15, а остальные средства рассматриваются в этой главе. ПРИМЕЧАНИЕ ЫЛ)О в С№ — это, по сути, язык в языке. Поэтому предмет рассмотрения ПЛ)Ц довольно обширен и включает в себя многие средства, возможности и альтернативы. Несмотря на то что в этой главе дается подробное описание средств С)НО, рассмотреть здесь все их возможности, особенности и области применения просто невозможно.

Для этого потребовалась бы отдельная книга. В связи с этим в настоящей главе основное внимание уделяется главным элементам ПЛ)Ц, применение которых демонстрируется на многочисленных примерах. Д в долгосрочной перспективе 1з)ЧО представляет собой подсистему, которую придется изучать самостоятельно и достаточно подробно. Основы ИМЯ В основу ЕПЩ положено понятие запроса, в котором определяется информация, получаемая из источника данных. Например, запрос списка рассылки почтовых сообщений заказчикам может потребовать предоставления адресов всех заказчиков, проживающих в конкретном городе; запрос базы данных товарных запасов — список товаров, запасы которых исчерпались на складе; а запрос журнала, регистрирующего интенсивность использования Интерента, — список наиболее часто посещаемых вебсайтов.

И хотя все эти запросы отличаются в деталях, их можно выразить, используя одни и те же синтаксические элементы ЫЬ)О. Как только запрос будет сформирован, его можно выполнить. Это делается, в частности, в цикле гогеасЛ. В результате выполнения запроса выводятся его результаты. Поэтому использование запроса может быть разделено на две главные стадии. На первой стадии запрос формируется, а на второй — выполняется.

Таким образом, при формировании запроса определяется, что именно следует извлечь из источника данных. А при выполнении запроса выводятся конкретные ретулыпатпьь Глава 19. НИЦ 639 Для обращения к источнику данных по запросу, сформированному средствами 11)ь(С5 в этом источнике должен быть реализован интерфейс 1ЕпиыегаЬ1е.

Он имеет две формы: обобщенную и необобщенную. Как правило, работать с источником данных легче, если в нем реализуется обобщенная форма 1Еппгпе гаЬ1е<Т>, где Т обозначает обобщенный тип перечисляемых данных. Здесь и далее предполагается, что в источнике данных реализуется форма интерфейса 1ЕппвегаЬ1е<Т>. Этот интерфейс объявляется в пространстве имен Яузсеы.

Со11есс1опз . Сепег1с. Класс, в котором реализуется форма интерфейса 1ЕппвегаЬ1е<Т>, поддерживает перечисление, а это означает, что его содержимое может быть получено по очереди или в определенном порядке. Форма интерфейса 1ЕппыегаЬ1е<Т> поддерживается всеми массивами в СК Поэтому на примере массивов можно наглядно продемонстрировать основные принципы работы 1,1)ь)( ). Следует, однако, иметь в виду, что применение 1.1И(1 не ограничивается одними массивами. Простой запрос А теперь самое время обратиться к простому примеру использования 11МД. В приведенной ниже программе используется запрос для получения положительных значений, содержащихся в массиве целых значений.

/! Сформировать простой запрос Ь1Н(). па1по Яуагепн па1пд Яуасез.ъгпйг с1ааз ЯгирЯоегу ( агасгс чогб На1п() ( Тпг() попа = ( .1, -2, 3, О, -4, 5 ) // Сформировать простой запрос на получение только положительных значений. чаг роаяопа = Ггои и ьп поза чаете и > О ае1есп и; Сопзо1е.яггсе("Положительные значения из массива поза: "); Выполнить запрос и отобразить его результаты. Гогеасп(1пс г гп роанпиа) Сопзо1е.ыггсе(г + " "); Сопао1е.нг1сеъгпе(); ) ) Эта программа дает следующий результат.

Положительные значения из массива ппиа: 1 3 5 Как видите, в конечном итоге отображаются только положительные значения, хранящиеся в массиве пиыз. Несмотря на всю свою простоту, этот пример наглядно демонстрирует основные возможности 1.Пь(( ). Поэтому рассмотрим его более подробно.

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

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

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

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