-->

Полное руководство. С# 4.0

На нашем литературном портале можно бесплатно читать книгу Полное руководство. С# 4.0, Шилдт Герберт-- . Жанр: Программирование. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Полное руководство. С# 4.0
Название: Полное руководство. С# 4.0
Дата добавления: 16 январь 2020
Количество просмотров: 269
Читать онлайн

Полное руководство. С# 4.0 читать книгу онлайн

Полное руководство. С# 4.0 - читать бесплатно онлайн , автор Шилдт Герберт

В этом полном руководстве по C# 4.0 — языку программирования, разработанному специально для среды .NET, — детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.

В данной книге вы найдете:- Полное описание средств языка C#- Подробное рассмотрение новых средств в версии C# 4.0, в том числе PLINQ, библиотеку TPL, именованные и необязательные аргументы, динамический тип данных и многое другое- Сотни простых и понятных примеров программ с комментариями.- Самый полный источник информации по C#Благодаря поддержке параллельного языка интегрированных запросов (PLINQ) и библиотеки распараллеливания задач (TPL) версия 4.0 стала новой вехой в программировании на C#, и поэтому Герберт Шилдт, автор лучших книг по программированию, обновил и расширил свое классическое руководство, чтобы охватить в нем эти и другие нововведения. В книге подробно описываются языковые средства C#, даются профессиональные рекомендации и приводятся сотни примеров программ, охватывающих все аспекты программирования на C#, включая синтаксис, ключевые слова и основные библиотеки, не говоря уже о таких новшествах, как PLINQ, TPL, динамический тип данных, а также именованные и необязательные аргументы.Это необходимое каждому программирующему на C# справочное руководство написано простым и доступным языком, благодаря которому Герберт Шилдт стал таким популярным. В книге найдут ответы на насущные вопросы по C# как начинающие, так и опытные программисты.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

Перейти на страницу:

Помимо SQL, LINQ можно использовать вместе с XML-файлами и наборами данных ADO.NET Dataset. Не менее важным является применение LINQ вместе с массивами и коллекциями в C# (подробнее рассматриваемыми в главе 25). Таким образом,средства LINQ предоставляют, в целом, единообразный доступ к данным. И хотя такойпринцип уже сам по себе является весьма эффективным и новаторским, преимущества LINQ этим не ограничиваются. LINQ предлагает осмыслить иначе и подойти по-другому к решению многих видов задач программирования, помимо традиционнойорганизации доступа к базам данных. И в конечном итоге многие решения могут бытьвыработаны на основе LINQ.

LINQ поддерживается целым рядом взаимосвязанных средств, включая внедренныйв C# синтаксис запросов, лямбда-выражения, анонимные типы и методы расширения.О лямбда-выражениях речь уже шла в главе 15, а остальные средства рассматриваютсяв этой главе.

ПРИМЕЧАНИЕLINQ в C# — это, по сути, язык в языке. Поэтому предмет рассмотрения LINQ довольнообширен и включает в себя многие средства, возможности и альтернативы. Несмотря нато что в этой главе дается подробное описание средств LINQ, рассмотреть здесь все их возможности, особенности и области применения просто невозможно. Для этого потребоваласьбы отдельная книга. В связи с этим в настоящей главе основное внимание уделяется главным элементам LINQ, применение которых демонстрируется на многочисленных примерах.А в долгосрочной перспективе LINQ представляет собой подсистему, которую придется изучать самостоятельно и достаточно подробно.Основы LINQ

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

Как только запрос будет сформирован, его можно выполнить. Это делается, в частности, в цикле foreach. В результате выполнения запроса выводятся его результаты.Поэтому использование запроса может быть разделено на две главные стадии. На первой стадии запрос формируется, а на второй — выполняется. Таким образом, при формировании запроса определяется, что именно следует извлечь из источника данных.А при выполнении запроса выводятся конкретные результаты.

Для обращения к источнику данных по запросу, сформированному средствамиLINQ, в этом источнике должен быть реализован интерфейс IEnumerable. Он имеет две формы: обобщенную и необобщенную. Как правило, работать с источникомданных легче, если в нем реализуется обобщенная форма IEnumerable, где Т обозначает обобщенный тип перечисляемых данных. Здесь и далее предполагается, что висточнике данных реализуется форма интерфейса IEnumerable. Этот интерфейсобъявляется в пространстве имен System.Collections.Generic. Класс, в которомреализуется форма интерфейса IEnumerable, поддерживает перечисление, а этоозначает, что его содержимое может быть получено по очереди или в определенномпорядке. Форма интерфейса IEnumerable поддерживается всеми массивами в С#.Поэтому на примере массивов можно наглядно продемонстрировать основные принципы работы LINQ. Следует, однако, иметь в виду, что применение LINQ не ограничивается одними массивами.Простой запрос

А теперь самое время обратиться к простому примеру использования LINQ. В приведенной ниже программе используется запрос для получения положительных значений, содержащихся в массиве целых значений.// Сформировать простой запрос LINQ.using System;using System.Linq;class SimpQuery { static void Main() { int[] nums = { 1, -2, 3, 0, -4, 5 }; // Сформировать простой запрос на получение только положительных значений. var posNums = from n in nums where n > 0 select n; Console.Write("Положительные значения из массива nums: "); // Выполнить запрос и отобразить его результаты. foreach(int i in posNums) Console.Write(i + " "); Console.WriteLine(); }}

Эта программа дает следующий результат.Положительные значения из массива nums: 1 3 5

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

Прежде всего обратите внимание на применение в данном примере программыследующего оператора.using System.Linq;

Для применения средств LINQ в исходный текст программы следует включить пространство имен System.Linq.

Затем в программе объявляется массив nums типа int. Все массивы в C# неявнымобразом преобразуются в форму интерфейса IEnumerable. Благодаря этому любой массив в C# может служить в качестве источника данных, извлекаемых по запросуLINQ.

Далее объявляется запрос, по которому из массива nums извлекаются элементытолько с положительными значениями.var posNums = from n in nums where n > 0 select n;

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

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

Далее следует оператор where, обозначающий условие, которому должен удовлетворять элемент в источнике данных, чтобы его можно было получить по запросу.Ниже приведена общая форма синтаксиса оператора where.where булево_выражение

В этой форме булево_выражение должно давать результат типа bool. Такое выражение иначе называется предикатом. В запросе можно указывать несколько операторов where. В данном примере программы используется следующий оператор where.where n > 0

Этот оператор будет давать истинный результат только для тех элементов массива,значения которых оказываются больше нуля. Выражение n > 0 будет вычислятьсядля каждого из n элементов массива n при выполнении запроса. В итоге будут получены только те значения, которые удовлетворяют этому условию. Иными словами,оператор where выполняет роль своеобразного фильтра, отбирая лишь определенныеэлементы.

Все запросы оканчиваются оператором select или group. В данном примереиспользуется оператор select, точно определяющий, что именно должно быть получено по запросу. В таких простых примерах запросов, как рассматриваемый здесь,выбирается конкретное значение диапазона. Поэтому по данному запросу возвращаются только те целые значения, которые удовлетворяют условию, указанному в операторе where. В более сложных запросах можно дополнительно уточнять, что именноследует выбирать. Например, по запросу списка рассылки может быть получена лишьфамилия адресата вместо его полного адреса. Обратите внимание на то, что операторselect завершается точкой с запятой, поскольку это последний оператор в запросе.А другие его операторы не оканчиваются точкой с запятой.

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

Перейти на страницу:
Комментариев (0)
название