Created
June 12, 2014 14:59
-
-
Save Fhernd/77da427a38033215714a to your computer and use it in GitHub Desktop.
Demostración del uso de variables capturadas en expresiones lambda en C#.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
namespace Articulos.Cap04 | |
{ | |
public sealed class VariableCapturadExpresionLambda | |
{ | |
public static Func<int> IncrementarContadorLocal() | |
{ | |
int contador = 0; | |
// Retorna una expresión lambda que será asignada | |
// a un delegado de naturaleza `Func<TResult>`: | |
return () => contador++; | |
} | |
public static void Main() | |
{ | |
// Creamos un delegado de tipo `Func<TResult>`: | |
Func<int> delegadoIncremento; | |
// Invocamos a `IncrementarContadorLocal` una | |
// sola vez para obtener la referencia a una expresión lambda: | |
delegadoIncremento = IncrementarContadorLocal(); | |
// Mostremos en pantalla la invocación indirecta de la | |
// expresión lambda retornada por `IncrementarContadorLocal` | |
// y encapsulada en en la instancia `delegadoIncremento`: | |
Console.WriteLine (delegadoIncremento()); | |
Console.WriteLine (delegadoIncremento()); | |
Console.WriteLine (delegadoIncremento()); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment