TOC

This article has been localized into Portuguese by the community.

C# 3.0:

Inicializadores de objetos

Com o C# 3.0, a inicialização de objetos e coleções ficou muito mais fácil. Considere esta simples classe Car, onde usamos as propriedades automáticas descritas em um capítulo anterior:

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

Agora, no C # 2.0, teríamos que escrever um código como este para criar uma instância Car e definir suas propriedades:

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

Está tudo bem, mas com o C # 3.0, pode ser feito de forma mais limpa, graças à nova sintaxe do inicializador de objeto:

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

Como você pode ver, usamos um conjunto de chaves depois de instanciar um novo objeto Car e, dentro delas, temos acesso a todas as propriedades públicas da classe Car. Isso economiza um pouco de digitação e um pouco de espaço também. A parte legal é que ela pode ser aninhada também. Considere o exemplo a seguir, onde adicionamos uma nova propriedade complexa à classe Car, desta forma:

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 um carro novo com o C # 2.0, teríamos que fazer algo assim:

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

Com o C # 3.0, podemos fazer assim:

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

Ou caso você não esteja muito preocupado com a legibilidade, assim:

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

Assim como com as propriedades automáticas, isso é um açúcar sintático - você pode usá-lo ou simplesmente ficar com a maneira antiga de fazer as coisas.


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!