Автоматически реализуемые свойства
Часть раздела Объектно-ориентированное программирование путешествия по 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;
}Автоматически реализуемые свойства идеальны, когда вам не нужна валидация или пользовательская логика в геттере или сеттере. Они делают ваши классы чище и значительно сокращают объем шаблонного кода.
Задание
ЛегкоДавайте создадим простую систему инвентаризации, используя автоматически реализуемые свойства для отслеживания товаров в магазине.
Вы создадите два файла для организации своего кода:
Item.cs: Определите классItemв пространстве именInventoryс автоматически реализуемыми свойствами дляName(string),Price(decimal) иInStock(bool). Установите значения по умолчанию:Nameдолжно иметь значение"Unknown",Price—0.0m, аInStock—true.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}
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыПространства имен и директивыВведение в классы и объектыКлючевое слово 'this'Методы и параметрыПоля и свойстваКонструкторыИнициализаторы объектовИтоги — Простой калькулятор4Наследование
Основы синтаксиса наследования (:)Ключевое слово 'base'Ключевые слова Virtual и OverrideЗапечатанные классыБазовый класс 'object'Итоги — Иерархия сотрудников7Продвинутые возможности
Перегрузка операторовИндексаторы (this[])Переопределение ToString()Методы расширенияПовторение — Пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПотокобезопасный SingletonПаттерн FactoryПаттерн Observer (События)Паттерн Strategy13Финальные испытания
Платформа для онлайн-обученияКомпонент игрового персонажаСервис аренды транспорта2Свойства и статические члены
Автоматически реализуемые свойстваСвойства только для чтения и записиСтатические поля и методыСтатические классыЧлены в виде выражений5Полиморфизм и интерфейсы
Полиморфизм: компиляция vs выполнениеИнтерфейс vs абстрактный классМножественные интерфейсыЯвные интерфейсыUpcasting и DowncastingИтоги: Калькулятор фигур8Продвинутые концепции ООП
Композиция вместо наследованияGenerics (классы и методы)Делегаты и событияАтрибуты и рефлексияIDisposable и оператор usingОсновы Dependency Injection11Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн Компоновщик3Архитектура классов
Экземплярные и статические данныеКлючевые слова 'readonly' и 'const'Опорные поляПовторение — Менеджер банковских счетов6Инкапсуляция
Модификаторы доступаСвойства для инкапсуляцииРеализация скрытия данныхПаттерны неизменяемостиИтоги — Записи студентов9Переменное количество аргументов
Ключевое слово 'params'Необязательные параметрыИменованные аргументыПерегрузка методов