Suche…


Syntax

  • SomeClass sc = new SomeClass {Eigenschaft1 = Wert1, Eigenschaft2 = Wert2, ...};
  • SomeClass sc = new SomeClass (param1, param2, ...) {Eigenschaft1 = Wert1, Eigenschaft2 = Wert2, ...}

Bemerkungen

Die Konstruktorklammern können nur weggelassen werden, wenn für den zu instanziierenden Typ ein standardmäßiger (parameterloser) Konstruktor verfügbar ist.

Einfache Benutzung

Objektinitialisierer sind praktisch, wenn Sie ein Objekt erstellen und gleich einige Eigenschaften festlegen müssen, die verfügbaren Konstruktoren jedoch nicht ausreichen. Sagen Sie, Sie haben eine Klasse

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }

    // the rest of class definition
}

So initialisieren Sie eine neue Instanz der Klasse mit einem Initialisierer:

Book theBook = new Book { Title = "Don Quixote", Author = "Miguel de Cervantes" };

Das ist äquivalent zu

Book theBook = new Book();
theBook.Title = "Don Quixote";
theBook.Author = "Miguel de Cervantes";

Verwendung mit anonymen Typen

Objektinitialisierer sind die einzige Möglichkeit, anonyme Typen zu initialisieren, dh vom Compiler generierte Typen.

var album = new { Band = "Beatles", Title = "Abbey Road" };

Aus diesem Grund werden in LINQ-Select-Abfragen häufig Objektinitialisierer verwendet, da sie auf bequeme Weise angeben können, für welche Teile eines abgefragten Objekts Sie sich interessieren.

var albumTitles = from a in albums 
                  select new 
                  { 
                     Title = a.Title, 
                     Artist = a.Band 
                  };

Verwendung mit nicht standardmäßigen Konstruktoren

Sie können Objektinitialisierer mit Konstruktoren kombinieren, um Typen bei Bedarf zu initialisieren. Nehmen Sie zum Beispiel eine Klasse, die als solche definiert ist:

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

Dadurch wird zunächst ein Book mit dem Konstruktor Book(int) instanziiert und anschließend jede Eigenschaft im Initialisierer festgelegt. Es ist äquivalent zu:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow