Buscar..


Sintaxis

  • SomeClass sc = new SomeClass {Property1 = value1, Property2 = value2, ...};
  • SomeClass sc = new SomeClass (param1, param2, ...) {Property1 = value1, Property2 = value2, ...}

Observaciones

Los paréntesis del constructor solo se pueden omitir si el tipo que se está creando tiene un constructor predeterminado (sin parámetros) disponible.

Uso simple

Los inicializadores de objetos son útiles cuando necesita crear un objeto y establecer un par de propiedades de inmediato, pero los constructores disponibles no son suficientes. Di que tienes una clase

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

    // the rest of class definition
}

Para inicializar una nueva instancia de la clase con un inicializador:

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

Esto es equivalente a

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

Uso con tipos anónimos

Los inicializadores de objetos son la única forma de inicializar tipos anónimos, que son tipos generados por el compilador.

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

Por esa razón, los inicializadores de objetos se utilizan ampliamente en las consultas de selección de LINQ, ya que proporcionan una manera conveniente de especificar qué partes de un objeto consultado le interesan.

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

Uso con constructores no predeterminados

Puede combinar inicializadores de objetos con constructores para inicializar tipos si es necesario. Tomemos por ejemplo una clase definida como tal:

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

Esto primero creará una instancia de un Book con el constructor Book(int) , luego establecerá cada propiedad en el inicializador. Es 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow