Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharpNotesForProfessionals.pdf
Скачиваний:
57
Добавлен:
20.05.2023
Размер:
6.12 Mб
Скачать

Chapter 46: Object initializers

Section 46.1: Simple usage

Object initializers are handy when you need to create an object and set a couple of properties right away, but the available constructors are not su cient. Say you have a class

public class Book

{

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

// the rest of class definition

}

To initialize a new instance of the class with an initializer:

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

This is equivalent to

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

Section 46.2: Usage with non-default constructors

You can combine object initializers with constructors to initialize types if necessary. Take for example a class defined as such:

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

This will first instantiate a Book with the Book(int) constructor, then set each property in the initializer. It is equivalent to:

var someBook = new Book(16); someBook.Title = "Don Quixote"; someBook.Author = "Miguel de Cervantes";

Section 46.3: Usage with anonymous types

Object initializers are the only way to initialize anonymous types, which are types generated by the compiler.

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

GoalKicker.com – C# Notes for Professionals

187

For that reason object initializers are widely used in LINQ select queries, since they provide a convenient way to specify which parts of a queried object you are interested in.

var albumTitles = from a in albums select new

{

Title = a.Title,

Artist = a.Band

};

GoalKicker.com – C# Notes for Professionals

188