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

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

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

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

Затем в этой программе создается еще один класс 1пвсос)сВСакпя, связывающий порядковый номер товара с булевым свойством, которое указывает на наличие или отсутствие товара на складе. И наконец, в данной программе создается класс Тетр с двумя полями: строковым (зтг1п9) и булевым (Ьоо1). В объектах этого класса будут храниться результаты запроса. В этом запросеоператор зозп используется для получения списка, в котором наименование товара связывается с состоянием его запасов на складе.

// Продемонстрировать применение оператора зо1п. чяьпд 5уясепч сяьпЧ ВуягеинЫьпсц Класс, связывакщий наименование товара с его порядковым номером. с1аяя 11еи ( рчыьс ясгьпч мате ( чеьч яесы ) рчЫзс 1пс 11епнсыЬег ( рею яеьч ] рсЫьс 1гет(яггьпЧ и, ьпг ьпот) Мазе = п; 11епнизЬег = 1поыг ) // Класс, связывакщий наименование товара с состоянием его запасов на складе. с1аяя 1пзгоск5гагся ( 662 Часть!. Язык С() роЬ11с Тпг 1гепдозоег ( цес1 Яес) ] рпЫ1с Ьоо1 1пзоосх ( Бес; яес; ) роЫ1с 1пЯСосКЯСаооя(зпс и, Ьоо1 Ы ( 1Гепнозбег = и) 1ПЯГоск = Ь1 ) ) // Класс, инкапсулиругамй наименование товара и // состояние его запасов на складе. с1аяя Тетр ( роЫТс ясгьпч Мазе ( чес1 яес; ) РОЫГС ЬОО1 1ПБГОСК ( 9ЕГ; ЯЕГ; ) роЬ11с Тезр(ясгвпч и, Ьоо1 Ь) ( Мазе = п) 1пзсоск = Ь; ) с1аяя Поьпбезо ( ятаГТс чогб Ма1п() ( 1Гез() Тоезв = ( пен 1сеи("Кусачки", 1424), пеи 1сез("Тиски", 7892), пен 1оез("Молоток", 8534), пеи 1оез(саида", 6411) )' 1пБСос)сзоъаоя () яоъсояЬТяс = ( лен 1пягос)гягагоя(1424, ггое), пен 1пзоосхЯГасоя(7892, Та1яе), пеи 1пЯГосхЯГаооя(8534, Ггое), лен 1пЯГоскЯГаооя(6411, Ггое) О СФормировать запрос, объединяге~ий объекты классов 1сеи // и 1пБГосьБГасоя для составления списка наименований товаров // и их наличия на складе.

Обратите внимание на Формирование О последовательности объектов класса Тезр. чаг ТпЯГосКЬЬяв = Тгои 1сеи ьп Тсевя 3озп епсгу Тп ясасояььяс оп 1оеи.1сезд~нпбег еооа1я епсгу.1оевМопбег яе1есс пеи Тетр(зяб.каше, епсгу.1пЯГосх); Сопяо1е.нг1сеьтпе("Товар~СНаличие1п")/ // Выпоянить запрос и вывести его результаты. Тогеась(тезр Г Тп 1пЯСоскьЬяо) Сопяо1е,мгтоеьтпе("(0) 1г(1)", ымазе, Ы 1пБСосх) 1 Глава 19. оно 663 Эта программа дает следующий результат. Товар Наличие кусачки Тиски Молоток Пила Тгпе Га1ае Тгие Тгсе уаг тпзсоскгдас = Гсов 1сеп гп хлева В этом операторе указывается переменная диапазона Ткет для источника данных 1гета, который представляет собой массив объектов класса 1гель В классе 1пеп инкапсулируются наименование товара и порядковый номер товара, хранящегося на складе.

Далее следует приведенный ниже оператор ) огп. )о1п епггу 1п згагааь1зг оп Тсеп.1селахллоег еяса1а епсгу.1се~тВсапег В этом операторе указывается переменная диапазона епг ту для источника данных агагпзЫаг, который представляет собой массив объектов класса 1пзгоскЯсагпа, связывающего порядковый номер товара с состоянием его запасов на складе. Следовательно, у массивов 1селга и з Гассзъ1з Г имеется общее свойство: порядковый номер товара. Именно это свойство используется в части оп / есгиа 1з оператора 1 о1п для описания связи, по которой из двух разных источников данных выбираются наименования товаров, когда их порядковые номера совпадают.

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

(Соответствующий пример будет приведен далее в этой главе.) Как правило, время и усилия, затраченные на полное освоение оператора 1 суп, окупаются сторицей, поскольку он дает возможность распознавать данные во время выполнения программы. Это очень ценная возможность. Но она становится еще ценнее, если используются анонимные типы, о которых речь пойдет в следующем разделе. Анонимные типы В СФ предоставляется средство, называемое анонимным типом и связанное непосредственно с 1ПЩ.

Как подразумевает само название, анонимный тип представляе~ Для того чтобы стал понятнее принцип действия оператора ) огп, рассмотрим каждую строку запроса из приведенной выше программы по порядку. Этот запрос начинается, как обычно, со следующего оператора уголь 664 Часть Е Язык 0№ собой класс, не имеющий имени. Его основное назначение состоит в создании объекта, возвращаемого оператором зе1еос. Результатом запроса нередко оказывается последовательность объектов, которые составляются из членов, полученных из двух или более источников данных 1как, например, в операторе 1 огп), или же включают в себя подмножество членов из одного источника данных. Но в любом случае тип возвращаемого объекта зачастую требуется только в самом запросе и не используется в остальной части программы.

Благодаря анонимному типу в подобных случаях отпадает необходимость объявлять класс, который предназначается только для хранения результата запроса. Анонимный тип объявляется с помощью следующей общей формы: пен ~ имн Л = значение Л, имт В = значение В, где имена обозначают идентификаторы, которые преобразуются в свойства, доступные только для чтения и инициализируемые значениями, как в приведенном ниже примере. пен ( Соппг = 10, Мах = 100, Мьп = О ) В данном примере создается класс с тремя открытыми только для чтения свойствами: Соппг, Мах и Мйп, которым присваиваются значения 10, 100 и 0 соответственно.

К этим свойствам можно обращаться по имени из другого кода. Следует заметить, что в анонимном типе используются инициализаторы объектов для установки их полей и свойств в исходное состояние. Как пояснялось в главе 8, инициализаторы объектов обеспечивают инициализацию объекта без явного вызова конструктора. Именно это и требуется для анонимных типов, поскольку явный вызов конструктора для них невозможен.

(Напомним, что у конструкторов такое же имя, как и у их класса. Но у анонимного класса нет имени, а значит, и нет возможности вызвать его конструктор.) Итак, у анонимного типа нет имени, и поэтому для обращения к нему приходится использовать неявно типизированную переменную. Это дает компилятору возможность вывести надлежащий тип. В приведенном ниже примере объявляется переменная вуОЬ, которой присваивается ссылка на объект, создаваемый в выражении анонимного типа. чаг иуОЬ = пен ( Соппг = 10, Мах = 100, Мьп = 0 ) Это означает, что следующие операторы считаются вполне допустимыми. Сопво1е.ихг Ьеглпе ~ "Счет равен " + иуОЬ.Соппш; 1Г ~1 <= туОЬ.Мах ЬЬ 1 >= иуОЬ.М1п) Напомним, что при создании объекта анонимного типа указываемые идентификаторы становятся свойствами, открытыми только для чтения.

Поэтому их можно использовать в других частях кода. Термин анонимный глин не совсем оправдывает свое название. Ведь тип оказывается анонимным только для программирующего, но не для компилятора, который присваивает ему внутреннее имя. Следовательно, анонимные типы не нарушают принятые в С№ правила строгого контроля типов. Для того чтобы стало более понятным особое назначение анонимных типов, рассмотрим переделанную версию программы из предыдущего раздела, посвященного оператору 1ойп. Напомним, что в этой программе класс тевр требовался для инкапсуляции результата, возвращаемого оператором )суп. Благодаря применению Глава 19. Ь[[4(2 665 анонимного типа необходимость в этом классе-заполнителе отпадает, а исходный код программы становится менее громоздким.

Результат выполнения программы при этом не меняется. О Использовать анонимный тип для усовершенствования О программы, демонстрирующей применение оператора зогп. чягпд Яуясеа; ця1п9 Буягеа.сгпс(," !/ Класс, связывающий наименование товара с его порядковым номером. с1аяя 1геа ( рцЫгс ягггпд Наше ( депп яеС; ) рцЫ1с гпС 1Сепв)цаЬег ( Бег; яеС; РцЫгс 1геа(вгггп9 пч 1пг 1пца) ( наше = и; 1геанчаЬег = гпоап ) О Класс, связывающий наименование товара с состоянием его запасов на складе. с1аяя 1пзгосхзгагця ( рцЫгс гпг 1СеаиапЬег ( деС; веС; ) РОЬ1ГС ЬОО1 1ПБСОСК ( БЕС; ЯЕС; ) рцЫгс 1пзгоскзгагця(гпг и, Ьоо1 Ы ( 1СеаицаЬег = и; гпБСоск = Ь; ) с1аяя АпоптуреОеао ( ягаг1с чоюв Мага() ( 1сеа[] гсеая = пен 1геа("Кусачки", 1424), печ 1геа("Тиски", 7892), печ 1геа("Молоток", 8534), печ 1Сеа(8пила", 6411) 1пзгосхзгагця() ягагцясгяг = ( пен 1пзгоскзгагця(1424, Сгце), пен 1пзгосхзгагця(7892, Га1яе), лен гпзгоскзгагця(8534, Сгце), пен 1пзгосхзгагця(8411, Сгце) ): // Сформировать запрос, объединяющий объекты классов 1геа и О 1пзсосхБСагця для составления списка наименований товаров и ик О наличия на складе.

Теперь для этой цели используется анонимный тип. чаг гпзгосввгяг = Ггоа ггеа гп ггеая зогп епсгу гп ясасцяькзс оп ггеа. 1геакцаЬег ес)ца1я епггу.1гепт)цаоег 666 Часть ). Язык С(г яе1есп пеы ( Маве = геев.иаве, Хпяспсх = епгту.1пясосх ); Сопяо1е.ит1геъгпе("Тояяр1сналичне1п"); /! Выполнить запрос н вывести его результаты. Гптеясп(тат Г ьп 1пзспскььяю Сопяп1е .Хгьге11пе ("( 0 ) 1Г(1 ) ", С .Маве, Г . 1пзсос)с) г Обратите особое внимание на следующий оператор яе1есс.

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

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

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

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