Repository navigation
IT CSharp Delegates Lambdas
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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.
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.
ClassicUO — Bad Newbie & C# Scripts IDE