Поиск…


Синтаксис

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

замечания

Консоли конструктора могут быть опущены только в том случае, если создаваемый тип имеет конструктор по умолчанию (без параметров).

Простое использование

Инициализаторы объектов удобны, когда вам нужно создать объект и сразу установить сразу несколько свойств, но доступных конструкторов недостаточно. Скажем, у вас есть класс

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

    // the rest of class definition
}

Чтобы инициализировать новый экземпляр класса с помощью инициализатора:

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

Это эквивалентно

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

Использование анонимных типов

Инициализаторы объектов - единственный способ инициализировать анонимные типы, которые являются типами, сгенерированными компилятором.

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

По этой причине инициализаторы объектов широко используются в запросах на выбор LINQ, поскольку они предоставляют удобный способ указать, какие части запрашиваемого объекта вам интересны.

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

Использование с нестандартными конструкторами

Вы можете комбинировать инициализаторы объектов с конструкторами для инициализации типов, если это необходимо. Возьмем, например, класс, определенный как таковой:

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

Сначала это создаст экземпляр Book с помощью конструктора Book(int) , а затем задает каждое свойство в инициализаторе. Это эквивалентно:

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow