martes, 1 de julio de 2008

C# es fácil (v): Inicialización de objetos

En C# 3.0 se ha añadido la capacidad de crear e inicializar un objeto en una única sentencia. Antes, esto no era posible (excepto cuando se usaba una clase como un atributo y era más un apaño que otra cosa). Tampoco es que sea una novedad impactante, simplemente nos permite hacer el código un poco más cómodo, pero vamos... tampoco vamos a lanzar cohetes por esto :)
Ahora, cuando creamos un objeto, junto con el new, podemos invocar tantas propiedades (públicas) como deseemos, para dejar el objeto en el estado que nosotros queramos. Por ejemplo, imaginemos una clase Perro, tal y como sigue:
enum RazaPerro
{
    Terrier,
    BullDog,
    PastorAleman,
    Cocker,
    Basset,
    Monstruosa
}
class Perro
{
    public Perro()
    {
        _raza = RazaPerro.Terrier;
    }
    private int _edad;
    public int Edad
    {
        get { return _edad; }
        set { _edad = value; }
    }
    private Color color;
    public Color Color
    {
        get { return color; }
        set { color = value; }
    }
    private RazaPerro _raza;
    internal RazaPerro Raza
    {
        get { return _raza; }
        set { _raza = value; }
    }
}
Hasta ahora, si queriamos crear un Perro Mutante, digno de las mejores pesadillas, teníamos que hacer:
Perro monstruoso = new Perro();
monstruoso.Color = Color.Green;
monstruoso.Edad = 10;
monstruoso.Raza = RazaPerro.Monstruosa;

Pues ahora, gracias a la inicialización de objetos podemos hacerlo en una sola placentera linea:
Perro mutante = new Perro() { Color = Color.Green, Edad = 2, Raza = RazaPerro.Monstruosa };

Bueno... no hagais esa cara... ya os dije que tampoco había para tanto.... :)
Relacionado con la inicialización, decir que se ha añadido también la capacidad de "inicializar" colecciones... entendiendo por colección un objeto de cualquier clase que implemente IEnumerable. O sea que ahora puedo hacer esto:
List<Perro> SabuesosDelOscuro = new List<Perro>() { monstruoso, mutante };

De nuevo, tampoco revoluciona el panorama de los leguajes orientados a objetos, pero nos permite escribir código más compacto y más claro.
Con esto, a lo largo de la serie "C# es fácil", hemos repasado las principales novedades del lenguaje C# 3.0... en la próxima entrega veremos como se combinan todas ellas para dar lugar a una de las novedades más importantes: LINQ.
Nos vemos! ;-)

No hay comentarios: