TOC

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

C# 3.0:

Object Initializers

Avec C# 3.0, l'initialisation des objets et des collections est devenue beaucoup plus simple. Considérons cette classe "Car" simple, dans laquelle nous utilisons les propriétés automatiques décrites dans un chapitre précédent :

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

Avec C# 2.0, nous devrions écrire un morceau de code comme celui-ci pour créer une instance "Car" et définir ses propriétés :

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

C'est très bien, mais avec C# 3.0, ça peut désormais être fait un peu plus proprement, grâce à la nouvelle syntaxe d'initialisation d'objet :

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

Comme vous pouvez le voir, nous utilisons un ensemble d'accolades après avoir instancié un nouvel objet "Car", et à l'intérieur de celles-ci, nous avons accès à toutes les propriétés publiques de la classe "Car". Ça permet d'économiser un peu de saisie, et de place également. Ce qui est cool, c'est que ça peut aussi être imbriqué. Considérons l'exemple suivant, où nous ajoutons une nouvelle propriété complexe à la classe "Car", comme ceci :

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

Pour initialiser une nouvelle instance de "Car" avec C# 2.0, nous ferions quelque chose comme ça :

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

Avec C# 3.0, nous pouvons le faire comme ça à la place :

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

Ou, au cas où vous ne vous souciez pas trop de la lisibilité, comme ceci :

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

Tout comme pour les propriétés automatiques, il s'agit de parure syntaxique, vous pouvez soit l'utiliser, soit simplement vous en tenir à l'ancienne façon de faire.


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!