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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow