Menu
Coddy logo textTech

Инициализаторы объектов

Часть раздела Объектно-ориентированное программирование путешествия по C# на Coddy — урок 8 из 70.

Инициализаторы объектов предоставляют удобный способ установки значений свойств при создании объекта без вызова конструктора с множеством параметров.

Традиционный способ с использованием конструктора

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
}

Person person = new Person();
person.Name = "Alice";
person.Age = 25;
person.City = "New York";

Использование синтаксиса инициализатора объектов

Person person = new Person
{
    Name = "Alice",
    Age = 25,
    City = "New York"
};

Инициализаторы объектов с конструкторами

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; }
    
    public Person(string name)
    {
        Name = name;
    }
}

// Конструктор устанавливает Name, инициализатор устанавливает остальные свойства
Person person = new Person("Bob")
{
    Age = 30,
    City = "London"
};

Вложенные инициализаторы объектов

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
}

public class Person
{
    public string Name { get; set; }
    public Address Address { get; set; }
}

Person person = new Person
{
    Name = "Charlie",
    Address = new Address
    {
        Street = "123 Main St",
        City = "Boston"
    }
};

Создание нескольких объектов с помощью инициализаторов

Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };
Person person3 = new Person { Name = "Charlie", Age = 35 };

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

challenge icon

Задание

Средне

Создайте три объекта Student, используя различные подходы инициализации объектов:

  • student1: Используйте конструктор по умолчанию с инициализатором объекта, чтобы установить все свойства (Name, StudentId, Major, GPA) из входных данных
  • student2: Используйте инициализатор объекта, чтобы установить только Name = "Bob" и Major = "Engineering"
  • student3: Используйте конструктор с "Charlie" в качестве параметра, затем используйте инициализатор объекта, чтобы установить StudentId = 54321, Major = "Mathematics", GPA = 3.5

Шпаргалка

Инициализаторы объектов предоставляют удобный способ установки значений свойств при создании объекта:

Person person = new Person
{
    Name = "Alice",
    Age = 25,
    City = "New York"
};

Инициализаторы объектов можно комбинировать с конструкторами:

Person person = new Person("Bob")
{
    Age = 30,
    City = "London"
};

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

Person person = new Person
{
    Name = "Charlie",
    Address = new Address
    {
        Street = "123 Main St",
        City = "Boston"
    }
};

Можно лаконично создавать несколько объектов:

Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };

Попробуйте сами

using System;

class Program
{
    static void Main()
    {
        string name = Console.ReadLine();
        int studentId = int.Parse(Console.ReadLine());
        string major = Console.ReadLine();
        double gpa = double.Parse(Console.ReadLine());
        
        // TODO: Создайте student1, используя инициализатор объектов со всеми свойствами
        // Используйте конструктор по умолчанию и установите Name, StudentId, Major и GPA
        
        // TODO: Создайте student2, используя инициализатор объектов только с Name и Major
        // Name должно быть "Bob", Major должно быть "Engineering"
        
        // TODO: Создайте student3, используя конструктор с параметром имени "Charlie"
        // Затем используйте инициализатор объектов, чтобы установить StudentId = 54321, Major = "Mathematics", GPA = 3.5
        
        Console.WriteLine($"Student 1: {student1.Name} (ID: {student1.StudentId}) - {student1.Major}, GPA: {student1.GPA}");
        Console.WriteLine($"Student 2: {student2.Name} (ID: {student2.StudentId}) - {student2.Major}, GPA: {student2.GPA}");
        Console.WriteLine($"Student 3: {student3.Name} (ID: {student3.StudentId}) - {student3.Major}, GPA: {student3.GPA}");
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование