Skip to content

ES CSharp Delegates Lambdas

Codex edited this page Oct 11, 2026 · 2 revisions

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

Delegados, lambdas y cierres

Manual C# · Ejemplos UO

El delegado almacena la función llamada de una firma específica. Action no devuelve un resultado, Func devuelve uno, Predicate<T> devuelve bool. Lambda se escribe como arguments => expression o bloque. La variable capturada pertenece al cierre, por lo que cambiar su valor afecta las llamadas posteriores.

Ejemplo sencillo (Example.cs)

Guarde este ejemplo por separado como Example.cs. Ejecútelo independientemente de los demás ejemplos de esta página.

Example.cs:

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

Resultado:

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 método se puede pasar como grupo de métodos cuando su firma coincide con la del delegado. static-lambda no captura el contexto local. Para una lambda que devuelve una tarea, use Func<Task> o Func<T,Task> y espere la tarea; async void se deja a los controladores de eventos que requieren void.

Documentación oficial: Delegados, Lambdas y cierres - Microsoft Learn.

Clone this wiki locally