En alguna ocasión puede que os haga falta definir una llamada
a una función, y ejecutarla en otro momento de la aplicación. (Cachés, funciones con muchos bucles, etc.)
En .NET 4.0, la clase Lazy permite hacer esto.
Según el MSDN, se utiliza una instancia de Lazy<T>
para diferir la creación de un objeto grande o con uso intensivo de recursos, o
la ejecución de una tarea con uso intensivo de recursos, especialmente cuando
puede que no se produzca esa creación o ejecución durante la duración del
programa.
Veamos un ejemplo , que
es donde mejor se ve.
static void Main(string[] args)
{
Lazy<int> fn= new
Lazy<int>(()=>Sumar(3,4));
Console.WriteLine("Función
definida, pero no ejecutada");
Console.WriteLine("Valor
creado: "+ fn.IsValueCreated);
Console.WriteLine("Valor: "+ fn.Value);
Console.WriteLine("Valor
creado: " + fn.IsValueCreated);
}
public static int Sumar(int a, int b)
{
return a + b;
}