Skip to content

CSharp Delegates Lambdas

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Делегати, лямбди та замикання

Посібник C# · Приклади UO

Делегат зберігає функцію певної сигнатури. "Action" не повертає результат, "Func" повертає його, "Predicate<T>" повертає "bool". Лямбда записується як arguments => expression або блок. Захоплена змінна належить замиканню, тому зміна її значення впливає наступні виклики.

Простий приклад (Example.cs)

Збережіть цей приклад окремо як Example.cs. Запускайте його незалежно від інших прикладів на сторінці.

Example.cs:

// PROJECT-EXAMPLE
System.Func<int, int> twice = value => value * 2;
System.Console.WriteLine(twice(4));

Результат:

8
Func<int, int, int> add = (left, right) => left + right;
Action<string> report = text => UO.Print(text);
report($"Total={add(2, 3)}");
int count = 0;
Action next = () => count++;
next();
next();
UO.Print($"Count={count}");

Метод можна передати як метод групи, коли його сигнатура відповідає делегату. static-лямбда не захоплює локальний контекст. Для лямбди, що повертає завдання, використовуйте Func<Task> або Func<T,Task> і чекайте завдання; async void залишають обробникам подій, що вимагають void.

Офіційна документація: Делегати, лямбди та замикання - Microsoft Learn.

Clone this wiki locally