TOC

This article has been localized into Russian by the community.

C# 3.0:

Инициализаторы объекта

С c# 3.0 инициализация объектов и коллекций стала намного проще. Давайте рассмотрим простой класс автомобилей, где мы используем автоматические свойства, описанные в предыдущей главе:

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

Сейчас, в C# 2.0, мы должны были бы написать кусок кода, как этот, чтобы создать экземпляр автомобиля и установить его свойства:

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

Это просто отлично, но с C# 3.0 это можно сделать немного более чисто, благодаря новому синтаксису инициализатора объектов:

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

Как вы можете видеть, мы используем набор фигурных скобок после создания экземпляра нового объекта Car, и в них мы имеем доступ ко всем открытым свойствам класса Car. Это также экономит немного ввода, и немного места. Лучшая часть заключается в том, что она также может быть вложенной. Рассмотрим следующий пример, где мы добавляем новое сложное свойство в класс Car, например:

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; }
}

Для инициализации нового car в C# 2.0 мы должны были бы сделать что-то вроде этого:

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

С C# 3.0 мы можем вместо этого сделать это так:

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

Или в случае, если вас не очень заботит читабельность, так:

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

Так же, как с автоматическими свойствами, это синтаксический сахар - вы можете использовать его, или просто придерживаться старого, старомодного способа делать дела.


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!