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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow