by Misael Monterroca
26. October 2009 06:27
La inicialización del tipo Lazy (la traducción seria perezosa pero se refiere al hecho de crear un objeto hasta el momento de realmente utilizarlo aún y cuando el objeto sea instanciado en líneas anteriores) permite optimizar la manera en que creamos nuestros objetos. En .Net. C# 4.0 se introduce la clase Lazy<T> que permite inicializar los objetos hasta que realmente los vayamos a utilizar, veamos el siguiente ejemplo:
class Program
{
static void Main(string[] args)
{
Lazy<Prueba> f = new Lazy<Prueba>( );
Console.WriteLine("Prueba es definida");
if (!f.IsValueCreated) Console.WriteLine("Prueba aún no ha sido inicializada");
Console.WriteLine("Prueba::ID=" + (f.Value as Prueba).ID);
if (f.IsValueCreated) Console.WriteLine("Prueba ahora si está inicializada");
Console.Read();
}
}
public class Prueba
{
public int ID { get; set; }
public Prueba()
{
Console.WriteLine("Prueba:: El constructor es llamado");
ID = 1;
}
}
La ejecución obtendría el siguiente resultado:
Prueba es definida
Prueba aún no ha sido inicializada
Prueba:: El constructor es llamado
Prueba::ID=1
Prueba ahora si está inicializada
Como podemos ver el objeto Prueba se crea sólo cuando f.Value es accesado.