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

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

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

static void LambdaExpressionSyntax()

{

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

  List<int> list = new List<int>();

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

  // Обработать каждый аргумент внутри группы операторов кода.

  List<int> evenNumbers = list.FindAll((i) =>

  {

    // текущее значение i

    Console.WriteLine("value of i is currently: {0}", i);

    bool isEven = ((i % 2) == 0);

    return isEven;

  });

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

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

  foreach (int evenNumber in evenNumbers)

  {

    Console.Write("{0}t", evenNumber);

  }

  Console.WriteLine();

}

В данном случае список параметров (опять состоящий из единственного целочисленного значения i) обрабатывается набором операторов кода. Помимо вызова метода Console.WriteLine() оператор вычисления остатка от деления разбит на два оператора ради повышения читабельности. Предположим, что каждый из рассмотренных выше методов вызывается внутри операторов верхнего уровня:

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

TraditionalDelegateSyntax();

AnonymousMethodSyntax();

Console.WriteLine();

LambdaExpressionSyntax();

Console.ReadLine();

Запуск приложения дает следующий вывод:

***** Fun with Lambdas *****

Here are your even numbers:

20      4       8       44

Here are your even numbers:

20      4       8       44

value of i is currently: 20

value of i is currently: 1

value of i is currently: 4

value of i is currently: 8

value of i is currently: 9

value of i is currently: 44

Here are your even numbers:

20      4       8       44 

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

Показанные ранее лямбда-выражения обрабатывали единственный параметр. Тем не менее, это вовсе не обязательно, т.к. лямбда-выражения могут обрабатывать множество аргументов (или ни одного). Для демонстрации первого сценария с множеством аргументов добавьте показанную ниже версию класса SimpleMath:

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

public class SimpleMath

{

  public delegate void MathMessage(string msg, int result);

  private MathMessage _mmDelegate;

  public void SetMathHandler(MathMessage target)

  {

    _mmDelegate = target;

  }

  public void Add(int x, int y)

  {

    _mmDelegate?.Invoke("Adding has completed!", x + y);

  }

}

Обратите внимание, что делегат MathMessage ожидает два параметра. Чтобы представить их в виде лямбда-выражения, операторы верхнего уровня можно записать так:

// Зарегистрировать делегат как лямбда-выражение.

SimpleMath m = new SimpleMath();

m.SetMathHandler((msg, result) =>

  {Console.WriteLine("Message: {0}, Result: {1}", msg, result);});

// Это приведет к выполнению лямбда-выражения.

m.Add(10, 10);

Console.ReadLine();

Здесь задействовано выведение типа, поскольку для простоты два параметра не были строго типизированы. Однако метод SetMathHandler() можно было бы вызвать следующим образом:

m.SetMathHandler((string msg, int result) =>

  {Console.WriteLine("Message: {0}, Result: {1}", msg, result);});

Наконец, если лямбда-выражение применяется для взаимодействия с делегатом, который вообще не принимает параметров, то можно указать в качестве параметра пару пустых круглых скобок. Таким образом, предполагая, что определен приведенный далее тип делегата:

public delegate string VerySimpleDelegate();

вот как можно было бы обработать результат вызова:

// Выводит на консоль строку "Enjoy your string!".

VerySimpleDelegate d =

  new VerySimpleDelegate( () => {return "Enjoy your string!";} );

Console.WriteLine(d());

Используя новый синтаксис выражений, предыдущую строку можно записать следующим образом:

VerySimpleDelegate d2 =

  new VerySimpleDelegate(() => "Enjoy your string!");

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

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


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

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


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*