» » » » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

На нашем литературном портале можно бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю, Троелсен Эндрю . Жанр: Базы данных. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале litmir.org.
Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Название: Язык программирования C#9 и платформа .NET5
Дата добавления: 22 август 2024
Количество просмотров: 240
Читать онлайн

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

Язык программирования C#9 и платформа .NET5 читать книгу онлайн

Язык программирования C#9 и платформа .NET5 - читать бесплатно онлайн , автор Троелсен Эндрю

В 10-м издании книги описаны новейшие возможности языка C# 9 и .NET 5 вместе с подробным "закулисным" обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле.

Книга охватывает ASP.NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы .NET, начиная с улучшений показателей производительности настольных приложений Windows в .NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных.

Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.

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

using System.Linq;

static void QueryStringWithOperators()

{

  Console.WriteLine("***** Using Query Operators *****");

  string[] currentVideoGames = {"Morrowind", "Uncharted 2",

                                "Fallout 3", "Daxter", "System Shock 2"};

  var subset = from game in currentVideoGames

    where game.Contains(" ") orderby game select game;

  foreach (string s in subset)

  {

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

    Console.WriteLine("Item: {0}", s);

  }

}

Очевидное преимущество использования операций запросов C# при построении выражений запросов заключается в том, что делегаты Funс<> и вызовы методов Enumerable остаются вне поля зрения и внимания, т.к. выполнение необходимой трансляции возлагается на компилятор С#. Бесспорно, создание выражений LINQ с применением различных операций запросов (from, in, where или orderby) является наиболее распространенным и простым подходом.

Построение выражений запросов с использованием типа Enumerable и лямбда-выражений

Имейте в виду, что применяемые здесь операции запросов LINQ представляют собой сокращенные версии вызова расширяющих методов, определенных в типе Enumerable. Рассмотрим показанный ниже метод QueryStringsWithEnumerableAndLambdas(), который обрабатывает локальный массив строк, но на этот раз в нем напрямую используются расширяющие методы Enumerable:

static void QueryStringsWithEnumerableAndLambdas()

{

  Console.WriteLine("***** Using Enumerable / Lambda Expressions *****");

  string[] currentVideoGames = {"Morrowind", "Uncharted 2",

                                "Fallout 3", "Daxter", "System Shock 2"};

  // Построить выражение запроса с использованием расширяющих методов,

  // предоставленных типу Array через тип Enumerable.

  var subset = currentVideoGames

    .Where(game => game.Contains(" "))

    .OrderBy(game => game).Select(game => game);

  // Вывести результаты.

  foreach (var game in subset)

  {

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

    Console.WriteLine("Item: {0}", game);

  }

  Console.WriteLine();

}

Здесь сначала вызывается расширяющий метод Where() на строковом массиве currentVideoGames. Вспомните, что класс Array получает данный метод от класса Enumerable. Метод Enumerable.Where() требует параметра типа делегата System.Func<T1,TResult>. Первый параметр типа упомянутого делегата представляет совместимые с интерфейсом IEnumerable<T> данные для обработки (массив строк в рассматриваемом случае), а второй — результирующие данные метода, которые получаются от единственного оператора, вставленного в лямбда-выражение.

Возвращаемое значение метода Where() в приведенном примере кода скрыто от глаз, но "за кулисами" работа происходит с типом OrderedEnumerable. На объекте указанного типа вызывается обобщенный метод OrderBy(), который также принимает параметр типа делегата Func<>. Теперь производится передача всех элементов по очереди посредством подходящего лямбда-выражения. Результатом вызова OrderBy() является новая упорядоченная последовательность первоначальных данных.

И, наконец, осуществляется вызов метода Select() на последовательности, возвращенной OrderBy(), который в итоге дает финальный набор данных, сохраняемый в неявно типизированной переменной по имени subset.

Конечно, такой "длинный" запрос LINQ несколько сложнее для восприятия, чем предыдущий пример с операциями запросов LINQ. Без сомнения, часть сложности связана с объединением в цепочку вызовов посредством операции точки. Вот тот же самый запрос с выделением каждого шага в отдельный фрагмент (разбивать запрос на части можно разными способами):

static void QueryStringsWithEnumerableAndLambdas2()

{

  Console.WriteLine("***** Using Enumerable / Lambda Expressions *****");

  string[] currentVideoGames = {"Morrowind", "Uncharted 2",

                               "Fallout 3", "Daxter", "System Shock 2"};

  // Разбить на части.

  var gamesWithSpaces =

      currentVideoGames.Where(game => game.Contains(" "));

  var orderedGames = gamesWithSpaces.OrderBy(game => game);

  var subset = orderedGames.Select(game => game);

  foreach (var game in subset)

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