Menu
Coddy logo textTech

Автоматически реализуемые свойства

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

Автоматически реализуемые свойства позволяют объявлять свойства без написания явных резервных полей. Компилятор автоматически создает скрытое закрытое поле в фоновом режиме.

Вместо того чтобы писать этот многословный код:

public class Product
{
    private string name;
    
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}

Вы можете просто написать:

public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int Quantity { get; set; }
}

Вы также можете задать значения по умолчанию непосредственно в объявлении:

public class Product
{
    public string Name { get; set; } = "Unnamed";
    public decimal Price { get; set; } = 0.0m;
    public bool IsAvailable { get; set; } = true;
}

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

challenge icon

Задание

Легко

Давайте создадим простую систему инвентаризации, используя автоматически реализуемые свойства для отслеживания товаров в магазине.

Вы создадите два файла для организации своего кода:

  • Item.cs: Определите класс Item в пространстве имен Inventory с автоматически реализуемыми свойствами для Name (string), Price (decimal) и InStock (bool). Установите значения по умолчанию: Name должно иметь значение "Unknown", Price0.0m, а InStocktrue.
  • Program.cs: В основном файле создайте два объекта Item, используя инициализаторы объектов. Считайте имя и цену для каждого товара из входных данных, а затем выведите сведения о каждом товаре.

Вы получите четыре входных значения:

  • Имя первого товара
  • Цена первого товара
  • Имя второго товара
  • Цена второго товара

Выведите каждый товар в следующем формате:

Item: {Name}, Price: {Price}, In Stock: {InStock}

Например, если входные данные — Laptop, 999.99, Mouse и 25.50, вывод должен быть следующим:

Item: Laptop, Price: 999.99, In Stock: True
Item: Mouse, Price: 25.50, In Stock: True

Шпаргалка

Автоматически реализуемые свойства позволяют объявлять свойства без написания явных полей резервного копирования. Компилятор автоматически создает скрытое закрытое поле.

Базовый синтаксис:

public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int Quantity { get; set; }
}

Установка значений по умолчанию:

public class Product
{
    public string Name { get; set; } = "Unnamed";
    public decimal Price { get; set; } = 0.0m;
    public bool IsAvailable { get; set; } = true;
}

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

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

using System;
using Inventory;

class Program
{
    public static void Main(string[] args)
    {
        // Чтение входных данных для первого товара
        string name1 = Console.ReadLine();
        decimal price1 = Convert.ToDecimal(Console.ReadLine());
        
        // Чтение входных данных для второго товара
        string name2 = Console.ReadLine();
        decimal price2 = Convert.ToDecimal(Console.ReadLine());
        
        // TODO: Создайте два объекта Item, используя инициализаторы объектов
        // Установите свойства Name и Price на основе введенных значений
        
        // TODO: Выведите сведения о каждом товаре в формате:
        // Item: {Name}, Price: {Price}, In Stock: {InStock}
    }
}
quiz iconПроверьте себя

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

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