C# Language
Initialiseurs d'objets
Recherche…
Syntaxe
- SomeClass sc = new SomeClass {Propriété1 = valeur1, Propriété2 = valeur2, ...};
- SomeClass sc = new SomeClass (param1, param2, ...) {Propriété1 = valeur1, Propriété2 = valeur2, ...}
Remarques
Les parenthèses du constructeur ne peuvent être omises que si un type par défaut (sans paramètre) est disponible pour le type instancié.
Usage simple
Les initialiseurs d'objet sont pratiques lorsque vous devez créer un objet et définir quelques propriétés immédiatement, mais les constructeurs disponibles ne sont pas suffisants. Dis que tu as un cours
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// the rest of class definition
}
Pour initialiser une nouvelle instance de la classe avec un initialiseur:
Book theBook = new Book { Title = "Don Quixote", Author = "Miguel de Cervantes" };
Ceci est équivalent à
Book theBook = new Book();
theBook.Title = "Don Quixote";
theBook.Author = "Miguel de Cervantes";
Utilisation avec des types anonymes
Les initialiseurs d'objet sont le seul moyen d'initialiser les types anonymes, qui sont des types générés par le compilateur.
var album = new { Band = "Beatles", Title = "Abbey Road" };
Pour cette raison, les initialiseurs d'objet sont largement utilisés dans les requêtes select LINQ, car ils fournissent un moyen pratique de spécifier les parties d'un objet interrogé qui vous intéressent.
var albumTitles = from a in albums
select new
{
Title = a.Title,
Artist = a.Band
};
Utilisation avec des constructeurs autres que ceux par défaut
Vous pouvez combiner des initialiseurs d'objet avec des constructeurs pour initialiser des types si nécessaire. Prenons par exemple une classe définie comme telle:
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" }
Cela va d'abord instancier un Book
avec le constructeur Book(int)
, puis définir chaque propriété dans l'initialiseur. C'est équivalent à:
var someBook = new Book(16);
someBook.Title = "Don Quixote";
someBook.Author = "Miguel de Cervantes";