Объектно-ориентированный C#

Свойства и инкапсуляция в C#

В этом уроке вы защитите объект от неверных значений с помощью свойств с проверкой.

Введение

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

Поле _price объявлено private, поэтому снаружи к нему нельзя обратиться напрямую. Свойство Price читает и записывает данные через это поле, а его часть set принимает только неотрицательные значения и выбрасывает ArgumentOutOfRangeException, если цена отрицательная. Поэтому у Product никогда не бывает неверной цены, а значение 19.95 выводится как обычно.

Пример на C#, который можно запустить

C#
Запустить код →
Program.cs
using System;

class Product
{
    private decimal _price;
    public decimal Price
    {
        get => _price;
        set => _price = value >= 0 ? value : throw new ArgumentOutOfRangeException();
    }
}

class Program
{
    static void Main()
    {
        var product = new Product { Price = 19.95m };
        Console.WriteLine(product.Price);
    }
}
Результат выполнения
19.95

Практика с отладчиком

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

Попрактикуйтесь на задаче

Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.

Все задачи