Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю Страница 250
- Категория: Компьютеры и Интернет / Базы данных
- Автор: Троелсен Эндрю
- Страниц: 642
- Добавлено: 2023-08-26 14:00:22
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту 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 - Троелсен Эндрю читать онлайн бесплатно
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!");
Жалоба
Напишите нам, и мы в срочном порядке примем меры.