Inicializadores en C#

Bueno  amigos este es mi primer post aquí en este nuevo blog y hoy quiero compartir una característica de C# 3.0 que son los Inicializadores de Objetos y Colecciones que formalmente se definen como:

Los inicializadores de objeto permiten asignar valores a los campos o propiedades accesibles de un objeto en el momento de la creación sin tener que invocar explícitamente un constructor.

En palabras comunes vendría siendo como la instanciación de un objeto con los valores que se le asignarían cada miembro publico o propiedad declarada en la clase sin tener definido precisamente un constructor personalizado con esos que reciba esos parámetros.

Veamos un ejemplo supongamos que tenemos la siguiente clase:

public class Persona
    {
        //Propiedades auto-implementadas otra característica de C# 3.0
        public string Nombre { get; set; }
        public string Apellidos { get; set; }
        public int Edad { get; set; }

        //Constructor Predeterminado
        public Persona()
        {
        }

        //Constructor con parámetros
        public Persona(string nombre, string apellidos, int edad)
        {
            this.Nombre = nombre;
            this.Apellidos = apellidos;
            this.Edad = edad;
        }
    }

Y tenemos dos posibilidades de usarla ya sea así:

Persona persona1 = new Persona("Abel", "Amaro", 20);

O de esta otra forma:

Persona persona2 = new Persona();
persona2.Nombre = "Abel";
persona2.Apellidos = "Amaro";
persona2.Edad = 20;

Cosa que es correcta y perfectamente normal pero ahora con los Inicializadores podemos simplificar la escritura de código y lo podremos realizar de esta manera:

Persona persona3 = new Persona()
{
    Nombre = "Abel",
    Apellidos = "Amaro",
    Edad = 20
 };

Como se puede observar es una forma mas limpia y mas clara ya que aparte de instanciar estamos asignado valores a sus campos .

Pero que pasa si se modificara la clase Persona vista anteriormente y e le agregara una nueva propiedad de Tipo Domicilio la cual es otra clase u Objeto

public class Persona
   {
       //Propiedades auto-implementadas otra característica de C# 3.0
       public string Nombre { get; set; }
       public string Apellidos { get; set; }
       public int Edad { get; set; }
       //Propiedad Agregada 
       public Localizacion Domicilio { get; set; }

       //Constructor Predeterminado
       public Persona()
       {
       }

       //Constructor con parámetros
       public Persona(string nombre, string apellidos, int edad)
       {
           this.Nombre = nombre;
           this.Apellidos = apellidos;
           this.Edad = edad;
       }
   }

y aquí tenemos la clase domicilio :

public class Localizacion
    {
        public string Direccion { get; set; }
        public string Estado { get; set; }
        public string Pais { get; set; }

        public Localizacion()
        { }

        public Localizacion(string direccion, string estado, string pais)
        {
            this.Direccion = direccion;
            this.Estado = estado;
            this.Pais = pais;
        }        
    }

Pues es fácil usando inicializadores se obtendría lo siguiente:

Persona persona3 = new Persona()
{
    Nombre = "Abel",
    Apellidos = "Amaro",
    Edad = 20,
    Domicilio = new Localizacion
    {
        Direccion = "Lazaro Cardenas #55",
        Estado = "Puebla",
        Pais = "Mexico"
     }
};

Pues eso es todo en este primer post Los invito a visitar mi sitio regularmente el la siguiente entrega hablare sobre Inicializadores de colecciones .

saludos

Sígueme en Twitter  @jumaroz

Aquí dejo la descarga con el código fuente Disponible para descarga

Anuncios

Acerca de amarotux

Ingeniero en Sistemas Computacionales del Instituto Tecnologico Superior de Huauchinago; Me gusta el desarrollo los videojuegos las tecnologías Open Source desarrollador Fre-Lance @jumaroz

Publicado el 26 de junio de 2012 en C# .Net y etiquetado en , , . Guarda el enlace permanente. Deja un comentario.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: