C# Language
Objectinitializers
Zoeken…
Syntaxis
- SomeClass sc = new SomeClass {Property1 = value1, Property2 = value2, ...};
- SomeClass sc = new SomeClass (param1, param2, ...) {Property1 = waarde1, Property2 = waarde2, ...}
Opmerkingen
De constructorhaakjes kunnen alleen worden weggelaten als het type dat wordt geïnstantieerd een standaard (parameterloze) constructor beschikbaar heeft.
Eenvoudig gebruik
Objectinitializers zijn handig wanneer u een object moet maken en meteen een aantal eigenschappen moet instellen, maar de beschikbare constructors zijn niet voldoende. Stel dat je een les hebt
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// the rest of class definition
}
Een nieuw exemplaar van de klasse initialiseren met een initialisatie:
Book theBook = new Book { Title = "Don Quixote", Author = "Miguel de Cervantes" };
Dit komt overeen met
Book theBook = new Book();
theBook.Title = "Don Quixote";
theBook.Author = "Miguel de Cervantes";
Gebruik met anonieme types
Objectinitializers zijn de enige manier om anonieme typen te initialiseren. Dit zijn typen die door de compiler worden gegenereerd.
var album = new { Band = "Beatles", Title = "Abbey Road" };
Om die reden worden objectinitializers veel gebruikt in LINQ select-query's, omdat ze een handige manier bieden om te specificeren in welke delen van een gezocht object u geïnteresseerd bent.
var albumTitles = from a in albums
select new
{
Title = a.Title,
Artist = a.Band
};
Gebruik met niet-standaardconstructors
U kunt objectinitializers combineren met constructors om indien nodig typen te initialiseren. Neem bijvoorbeeld een klasse die als zodanig is gedefinieerd:
public class Book {
public string Title { get; set; }
public string Author { get; set; }
public Book(int id) {
//do things
}
// the rest of class definition
}
var someBook = new Book(16) { Title = "Don Quixote", Author = "Miguel de Cervantes" }
Dit zal eerst een Book
instantiëren met de constructor Book(int)
en vervolgens elke eigenschap in de initialisatie instellen. Het is gelijk aan:
var someBook = new Book(16);
someBook.Title = "Don Quixote";
someBook.Author = "Miguel de Cervantes";