TOC

This article is currently in the process of being translated into Spanish (~98% done).

C# 3.0:

Object Initializers

Con C# 3.0, inicializar ambos objetos y colecciones se ha vuelto más fácil. Considere esta clase simple Car, donde usamos las propiedades automáticas descritas en el capítulo anterior:

class Car
{
    public string Name { get; set; }
    public Color Color { get; set; }
}

En C# 2.0, tendríamos que escribir una pieza de código como esta para crear una instancia de Car y asignar sus propiedades:

Car car = new Car();
car.Name = "Chevrolet Corvette";
car.Color = Color.Yellow;

Esto está bien, pero con C# 3.0, puede hacerlo un poco más limpiamente, gracias a la nueva sintásix del inicializador de objetos:

Car car = new Car { Name = "Chevrolet Corvette", Color = Color.Yellow };

Como puede ver, usamos un conjunto de corchetes rizados después de instanciar un nuevo objeto Car, y dentro de ellos, tenemos acceso a todas los propiedades públicas de la clase Car. Esto ahorra un poco de escritura, y un poco de espacio también. La parte genial es que ésto puede ser anidado también. Considere el siguiente ejemplos, donde agregamos una nueva propiedad compleja a la clase Car, así:

class Car
{
    public string Name { get; set; }
    public Color Color { get; set; }
    public CarManufacturer Manufacturer { get; set; }
}

class CarManufacturer
{
    public string Name { get; set; }
    public string Country { get; set; }
}

Para inicializar un nuevo Car con C# 2.0, tendríamos que hacer algo como esto:

Car car = new Car();
car.Name = "Corvette";
car.Color = Color.Yellow;
car.Manufacturer = new CarManufacturer();
car.Manufacturer.Name = "Chevrolet";
car.Manufacturer.Country = "USA";

Con C# 3.0, podemos hacerlo en contraste así:

Car car = new Car { 
                Name = "Chevrolet Corvette", 
                Color = Color.Yellow, 
                Manufacturer = new CarManufacturer { 
                    Name = "Chevrolet", 
                    Country = "USA" 
                } 
            };

O en caso de que le preocupe la legibilidad, como esto:

Car car = new Car { Name = "Chevrolet Corvette", Color = Color.Yellow, Manufacturer = new CarManufacturer { Name = "Chevrolet", Country = "USA" } };

Como con las propiedades automáticas, esto es "dulce sintáctico" - puede usarlo, o mantenerse en la forma tradicional de hacer las cosas.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!