C# Language
Inizializzatori di oggetti
Ricerca…
Sintassi
- SomeClass sc = new SomeClass {Property1 = value1, Property2 = value2, ...};
- SomeClass sc = new SomeClass (param1, param2, ...) {Proprietà1 = valore1, Proprietà2 = valore2, ...}
Osservazioni
Le parentesi del costruttore possono essere omesse solo se il tipo istanziato ha un costruttore predefinito (senza parametri) disponibile.
Uso semplice
Gli inizializzatori degli oggetti sono utili quando è necessario creare un oggetto e impostare subito un paio di proprietà, ma i costruttori disponibili non sono sufficienti. Di 'che hai una lezione
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// the rest of class definition
}
Per inizializzare una nuova istanza della classe con un inizializzatore:
Book theBook = new Book { Title = "Don Quixote", Author = "Miguel de Cervantes" };
Questo è equivalente a
Book theBook = new Book();
theBook.Title = "Don Quixote";
theBook.Author = "Miguel de Cervantes";
Utilizzo con tipi anonimi
Gli inizializzatori degli oggetti sono l'unico modo per inizializzare i tipi anonimi, che sono tipi generati dal compilatore.
var album = new { Band = "Beatles", Title = "Abbey Road" };
Per questo motivo gli inizializzatori di oggetti sono ampiamente utilizzati nelle query di selezione LINQ, poiché forniscono un modo conveniente per specificare quali parti di un oggetto interrogato sono interessati.
var albumTitles = from a in albums
select new
{
Title = a.Title,
Artist = a.Band
};
Utilizzo con costruttori non predefiniti
È possibile combinare gli inizializzatori di oggetti con i costruttori per inizializzare i tipi, se necessario. Prendiamo ad esempio una classe definita come tale:
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" }
Ciò prima istanzia un costruttore Book
with the Book(int)
, quindi imposta ogni proprietà nell'inizializzatore. È equivalente a:
var someBook = new Book(16);
someBook.Title = "Don Quixote";
someBook.Author = "Miguel de Cervantes";