Skip to content

IT CSharp Delegates Lambdas

Codex edited this page Oct 11, 2026 · 2 revisions

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

Delegati, lambda e chiusure

Manuale C# · Esempi UO

Il delegato memorizza la funzione chiamata di una firma specifica. Action non restituisce un risultato, Func ne restituisce uno, Predicate<T> restituisce bool. Lambda è scritto come arguments => expression o blocco. La variabile catturata appartiene alla chiusura, quindi la modifica del suo valore influisce sulle chiamate successive.

Esempio semplice (Example.cs)

Salvare questo esempio separatamente come Example.cs. Eseguirlo indipendentemente dagli altri esempi di questa pagina.

Example.cs:

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

Risultato:

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}");

Un metodo può essere passato come gruppo di metodi quando la sua firma corrisponde al delegato. static-lambda non cattura il contesto locale. Per un lambda che restituisce un'attività, utilizzare Func<Task> o Func<T,Task> e attendere l'attività; async void è lasciato ai gestori di eventi che richiedono void.

Documentazione ufficiale: Delegati, Lambda e chiusure - Microsoft Learn.

Clone this wiki locally