This article has been localized into Dutch by the community.
Object initialiseerders
Met C# 3.0 is het initialiseren van objecten en collections veel gemakkelijker geworden. Kijk naar deze eenvoudige Car class, waar we de automatische properties gebruiken die in een eerder hoofdstuk werden beschreven:.
class Car
{
public string Name { get; set; }
public Color Color { get; set; }
}
In C# 2.0 moesten we dit nog schrijven:
Car car = new Car();
car.Name = "Chevrolet Corvette";
car.Color = Color.Yellow;
Ook goed natuurlijk, maar nu gaat dat fraaier, dankzij de nieuwe object initialiseerder syntaxis:
Car car = new Car { Name = "Chevrolet Corvette", Color = Color.Yellow };
Je ziet dat we accolades gebruiken na het instantiëren van een nieuw Car object. Daarbinnen hebben we toegang tot alle public properties van de Car class. Dit spaart enig typewerk uit en eveneens wat ruimte. Het fraaie is dat het ook nog eens genest kan worden. Bekijk het volgende voorbeeld waar we aan de Car class een nieuwe complexe property toevoegen:
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; }
}
In C# 2.0 moesten we dit doen om een nieuwe 'car' te initialiseren:
Car car = new Car();
car.Name = "Corvette";
car.Color = Color.Yellow;
car.Manufacturer = new CarManufacturer();
car.Manufacturer.Name = "Chevrolet";
car.Manufacturer.Country = "USA";
Met C# 3.0 kunnen we het zo doen:
Car car = new Car {
Name = "Chevrolet Corvette",
Color = Color.Yellow,
Manufacturer = new CarManufacturer {
Name = "Chevrolet",
Country = "USA"
}
};
Of, als je je niet al te druk maakt om leesbaarheid, op deze manier:
Car car = new Car { Name = "Chevrolet Corvette", Color = Color.Yellow, Manufacturer = new CarManufacturer { Name = "Chevrolet", Country = "USA" } };
Net als bij de automatische properties is dit 'syntactische suiker'. Je kunt het doen, of alles bij het oude laten.