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

Тут можно читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Компьютеры и Интернет / Базы данных. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте FullBooks.club (Фулбукс) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

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


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

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

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

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

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

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

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

В целях подготовки фундамента для изучения лямбда-выражений создайте новый проект консольного приложения по имени LambdaExpressions. Для начала взгляните на метод FindAll() обобщенного класса List<T>. Данный метод можно вызывать, когда нужно извлечь подмножество элементов из коллекции; вот его прототип:

// Метод класса System.Collections.Generic.List<T>.

public List<T> FindAll(Predicate<T> match)

Как видите, метод FindAll() возвращает новый объект List<T>, который представляет подмножество данных. Также обратите внимание, что единственным параметром FindAll() является обобщенный делегат типа System.Predicate<T>, способный указывать на любой метод, который возвращает bool и принимает единственный параметр:

// Этот делегат используется методом FindAll()

// для извлечения подмножества.

public delegate bool Predicate<T>(T obj);

Когда вызывается FindAll(), каждый элемент в List<T> передается методу, указанному объектом Predicate<T>. Реализация упомянутого метода будет выполнять некоторые вычисления для проверки соответствия элемента данных заданному критерию, возвращая в результате true или false. Если метод возвращает true, то текущий элемент будет добавлен в новый объект List<T>, который представляет интересующее подмножество.

Прежде чем мы посмотрим, как лямбда-выражения могут упростить работу с методом FindAll(), давайте решим задачу длинным способом, используя объекты делегатов непосредственно. Добавьте в класс Program метод (TraditionalDelegateSyntax()), который взаимодействует с типом System.Predicate<T> для обнаружения четных чисел в списке List<T> целочисленных значений:

using System;

using System.Collections.Generic;

using LambdaExpressions;

Console.WriteLine("***** Fun with Lambdas *****\n");

TraditionalDelegateSyntax();

Console.ReadLine();

static void TraditionalDelegateSyntax()

{

<b>  // Создать список целочисленных значений.</b>

  List&lt;int&gt; list = new List&lt;int&gt;();

  list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });

<b>  // Вызвать FindAll() с применением традиционного синтаксиса делегатов.</b>

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

  Predicate&lt;int&gt; callback = IsEvenNumber;

  List&lt;int&gt; evenNumbers = list.FindAll(callback);

  Console.WriteLine(&quot;Here are your even numbers:&quot;);

  foreach (int evenNumber in evenNumbers)

  {

    Console.Write(&quot;{0}\t&quot;, evenNumber);

  }

  Console.WriteLine();

}

<b>// Цель для делегата Predicate&lt;&gt;.</b>

static bool IsEvenNumber(int i)

{

  // Это четное число?

  return (i % 2) == 0;

}

Здесь имеется метод (IsEvenNumber()), который отвечает за проверку входного целочисленного параметра на предмет четности или нечетности с применением операции получения остатка от деления (%) языка С#. Запуск приложения приводит к выводу на консоль чисел 20, 4, 8 и 44.

Наряду с тем, что такой традиционный подход к работе с делегатами ведет себя ожидаемым образом, IsEvenNumber() вызывается только при ограниченных обстоятельствах — в частности, когда вызывается метод FindAll(), который возлагает на нас обязанность по полному определению метода. Если взамен использовать анонимный метод, то можно превратить это в локальную функцию и код станет значительно чище. Добавьте в класс Program следующий новый метод:

static void AnonymousMethodSyntax()

{

<b>  // Создать список целочисленных значений.</b>

  List&lt;int&gt; list = new List&lt;int&gt;();

  list.AddRange(new int[] { 20, 1, 4, 8, 9, 44 });

<b>  // Теперь использовать анонимный метод.</b>

  List&lt;int&gt; evenNumbers =

    list.FindAll(delegate(int i) { return (i % 2) == 0; } );

  // Вывести четные числа

  Console.WriteLine(&quot;Here are your even numbers:&quot;);

  foreach (int evenNumber in evenNumbers)

  {

    Console.Write(&quot;{0}\t&quot;, evenNumber);

  }

  Console.WriteLine();

}

В данном случае вместо прямого создания объекта делегата Predicate&lt;T&gt; и последующего написания отдельного метода есть возможность определить метод как анонимный. Несмотря на шаг в правильном направлении, вам по-прежнему придется применять ключевое слово delegate (или строго типизированный класс Predicate&lt;T&gt;) и обеспечивать точное соответствие списка параметров:

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.