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

Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 118

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

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

Как вам должно быть уже известио, благодаря этому переменная роек овя становится неявно типизированной. Такими переменными удобно пользоваться в запросах, хотя их тип можно объявить и явным образом (это должна быть одна из форм интерфейса т киивегаЫе<т>). Обьявляемой перемеииой рояисвя в итоге присваивается выражение запроса. Все запросы начинаются с оператора гсов, определяющего два элемента. Первым из иих является переменная диапазона, прииимаюшая элементы из источника данных.

В данном примере эту роль выполняет переменная и. Вторым элементом является источиик данных (в данном случае — массив ипвя). Тип переменной диапазона выводится из источника данных. Поэтому переменная и относится к типу гис. Ниже приведена общая форма оператора йгов. Гсов переменная диапазона Ьи источник данных Далее следует оператор икте ге, обозначающий условие, которому должен удовлетворять элемент в источнике данных, чтобы его можно было получить по запросу.

Ниже приведена общая форма сиитаксиса оператора иттеге. ииеге булезо яыранение В этой форме булево выражение должно давать результат типа Ьоо1. Такое выражение иначе называется предихатпсм. В запросе можно указывать несколько операторов иттеге. В данном примере программы используется следующий опяратор и'иеге: пиесе и > О Этот оператор будет давать истинный результат только для тех элемеитов массива, значения которыхоказываются больше пуля. Выражение и > О будет вычислятьсядля каждого из и элементов массива и при выполнении запроса. В итоге будут получены только те значения, которые удовлетворяют этому условию.

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

Например, по запросу списка рассылки может быть получена лишь фамилия адресата вместо его полного адреса. Обратите внимание иа то, что оператор яе1есг завершается точкой с запятой, поскольку это последний оператор в запросе. А другие его операторы ие оканчиваются точкой с запятой. Глава 19. ЫМО 615 Итак, переменная запроса роянивя создана, но результаты запроса пока еще не получены.

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

Для выполнения запроса в данном примере программы организуется такой цикл: гогеасн(1пг г 1п ровиивв) Сопяо1е.игьсеъьпе(1 + " ")) В этом цикле переменная рояновя указывается в качестве коллекции для обращения на каждом шаге цикла. В цикле гогеасй соблюдаются правила, определенные в запросе и доступные по ссылке из переменной ровнивв. На каждом шаге цикла возвращается очередной элемент, полученный из массива. Этот процесс завершается, когда запрашиваемых элементов в массиве больше не обнаружено. В данном примере тип 1пг переменной шага цикла 1 указывается явно, поскольку по запросу извлекаются элементы именно этого типа. Явное указание типа переменной шага цикла вполне допустимо в тех случаях, когда заранее известен тип значения, выбираемого по запросу.

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

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

Язык С№ // Выполнить запрос и отобразить его результаты. Гогеасн(зпс г гп розалия) Сопво1е.иггсе(г Ь " ")т Сопяо1е.Игггепвпе()т // Внести изменения в массив ловя. Сопяо1е.иггсе11пе("1пзадать значение 99 элемента массива ловя[1).")т ловя[1) = 99) Сопяо1е.иггсе("Положительные значения из массива ппвя1п" + "после изменений в немт ")) // Выполнить запрос второй раз.

Гогеась(гпс 1 гп рояыивв) Сопяо1е.Иггге(г + " ")т Сопяо1е.иг1сесгпе()т ) Вот к какому результату приводит выполнение этой программы: Положительные значения из массива пввя: 1 3 5 Задать значение 99 элемента массива пыля[1). Положительные значения из массива ловя после изменений в нем: 1 99 3 5 Как следует из результата выполнения приведенной выше программы, значение элемента массива ппвя [1) изменилось с -2 иа 99, что и отражают результаты повторного выполнения запроса.

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

Соблюсти соответствие этих типов данных очень важно, ио в то же время нелегко — по крайней мере, так кажется иа первый взгляд, поэтому данный вопрос заслуживает более пристального внимания. Тип переменной диапазона должен соответствовать типу элементов, хранящихся в источнике данных. Следовательно, тип переменной диапазона зависит от типа источника данных. Как правило, тип переменной диапазона может быть выведен средствами С№. Но выводимость типов может быть осуществлена при условии, что в источнике данных реализована форма интерфейса 1кппвегаЫе<т>, где т обозначает тип элементов в источнике данных. (Как упоминалось выше, форма интерфейса 1еппвегаь1е<т> реализуется во всех массивах, как, впрочем, и во многих других источниках данных.) Но если в источнике данных реализован иеобобщеииый вариант интерфейса 1кпивегаЫе, то тип Глава 19.

ВМО 617 переменной диапазона придется указать явно. И зто делается в операторе Тгов. Ниже приведен пример явного объявления типа Тпс переменной диапазона п. гаг рояиивя = Ггов Тпс и Тп пива О Очевидно, что явное указание типа здесь не требуется, поскольку все массивы неявно преобразуются в форму интерфейса 1ЕппвегаЬ1е<Т>, которая позволяет вывести тип переменной диапазона. Тип объекта, возвращаемого по запросу, представляет собой экземпляр интерфейса 1ЕпивегаЬ1е<Т>, где Т вЂ” тип получаемых элементов. Следовательно, тип переменной запроса должен.

быть экземпляром интерфейса 1ЕпивегаЬ1е<Т>, а значение Т должно определяться типом значения, указываемым в операторе яе1есс. В предыдущих примерах значению Т соответствовал тип Тпс, поскольку переменная п имела тип 1пс. (Как пояснялось выше, переменная п относится к типу 1пс, потому что элементы именно этого типа хранятся в массиве пива.) С учетом явного указания типа 1ЕпивегаЬ1е<1пс> упомянутый выше запрос можно было бы составить следующим образом: ГниивегаЬ1е<1иг> рояиивя — Ггов и ьп иивя чпеге п > 0 яе1ясс и; Следует иметь в виду, что тип элемента, выбираемого оператором яе1есг, должен соответствовать типу аргумента, передаваемого форме интерфейса 1ЕпивегаЬ1е<Т>, используемой для объявления переменной запроса.

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

В предыдущих примерах тип этой переменной указывался явно как Тпс. Но имеется и другая возможность: предоставить компилятору самому вывести тип данной переменной, и для этого достаточно указать ее тип как чаг. Как будет показано далее в этой главе, ключевое слово уаг приходится использовать и в тех случаях, когда тип данных просто неизвестен. Общая форма запроса У всех запросов имеется общая форма, основывающаяся на ряде приведенных ниже контекстно-зависимых ключевых слов. Ггов ения1я Неясепп1пд аясепеьпд Оговор 1иго ьп ЗЬ1п 1ес огоегЬу яе1есс оп Среди них лишь приведенные ниже ключевые слова используются в начале операторов запроса. Ггов Зоьп чгоир яе1есс чьеге огссегЬу 618 Часть!. Язык Сз Запрос должен начинаться с ключевого слова ггаш и оканчиваться ключевым словом яе1есс или дгоир.

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

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

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

Г. Шилдт - С# 3.0 Полное руководство
C_sharp_3TCR_code
Apndx.lst
Chap2.lst
Chap3.lst
Chap4.lst
Chap5.lst
Chap6.lst
Chap7.lst
Chap8.lst
Chap9.lst
Chap10.lst
Chap11.lst
Chap12.lst
Chap13.lst
Chap14.lst
Chap15.lst
Chap16.lst
Chap17.lst
Chap18.lst
Chap19.lst
Chap20.lst
Chap21.lst
Chap22.lst
Chap23.lst
Chap24.lst
Chap25.lst
Chap26.lst
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее