C# Language
Objektinitialisierer
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";