C# Уроки: Аксессоры get/set и класс ‘Студент’

Разбор домашнего задания: Класс «Студент»

Рассмотрим пример класса Студент с полями name, cse и stepukha, имеющими модификатор доступа private. Значения присваиваются при создании объекта и не изменяются впоследствии. Класс содержит два конструктора: конструктор по умолчанию, устанавливающий значения по умолчанию и выводящий их на экран, и конструктор, принимающий три параметра и устанавливающий значения полей, также выводящий их на экран. Далее создаются три объекта класса Студент.

Свойства и аксессоры Get и Set

Свойство — механизм для чтения или записи значения поля (внутренней переменной класса). Все поля в нашем примере имеют модификатор доступа private, ограничивающий внешний доступ. Свойства с аксессорами get и set обеспечивают контролируемый доступ: get для чтения, set для записи.

Создание свойства с аксессором get

Пример свойства Kurs (тип int) для чтения значения поля kurs:

public int Kurs { get { return kurs; } }

Здесь:

  • public — модификатор доступа.
  • int — тип поля.
  • Kurs — имя свойства.
  • get — аксессор для чтения.
  • return kurs; — возвращает значение поля kurs.

Обращение к полю kurs объекта alex через свойство:

Console.WriteLine(alex.Kurs); // Выведет значение поля kurs объекта alex

Создание свойства с аксессорами get и set и проверкой значений

Добавим аксессор set с проверкой допустимого диапазона (1-5):

public int Kurs
{
    get { return kurs; }
    set
    {
        if (value < 1) kurs = 1;
        else if (value > 5) kurs = 5;
        else kurs = value;
    }
}

В аксессоре set:

  • value — скрытая переменная, содержащая новое значение.
  • Проверка value и присвоение полю kurs корректного значения.

Пример использования:

alex.Kurs = 3; // Запишет 3 в поле kurs
alex.Kurs = 6; // Запишет 5 в поле kurs (проверка сработала)

Зачем нужны свойства и аксессоры?

Преимущества свойств с аксессорами get и set перед публичными полями:

  • Контроль доступа: Управление доступом к полям и валидация данных.
  • Упрощение кода: Избегание дублирования кода для проверки и обработки данных.
  • Удобство: Более читабельный и удобный способ доступа к полям, чем использование методов.

Автоматические свойства

Для простых свойств без дополнительной логики:

public int Kurs { get; set; }

Компилятор генерирует код аксессоров get и set. Модификаторы доступа get и set могут быть public, protected, internal или private, позволяя ограничить доступ к чтению или записи.

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

Что будем искать? Например,программа