Аксессоры в C# позволяют контролировать доступ к полям класса, обеспечивая гибкое управление установкой и получением данных.
Работа с полями класса и аксессорами
В классах C# поля (за исключением статических, которые здесь не рассматриваются) обычно доступны напрямую. Аксессоры предлагают более контролируемый подход, позволяя добавлять дополнительную логику при чтении или записи значений.
Создание аксессора
Создадим аксессор для поля weight:
public int Weight
{
// ...
}
- public: модификатор доступа. Обычно используется public для открытого доступа, но возможны private и protected.
- int: тип данных поля (в данном случае – целое число).
- Weight: имя аксессора (в соответствии с соглашением о наименовании).
get и set в аксессоре
В фигурных скобках определяются блоки get и set:
public int Weight
{
get
{
return weight; // Возвращает значение поля weight
}
set
{
weight = value; // Устанавливает значение поля weight
}
}
- get: выполняется при чтении значения weight. Здесь возвращается значение поля.
- set: выполняется при записи значения в weight. Переменная value содержит новое значение.
Добавление проверки данных
Аксессоры позволяют добавлять проверку данных:
public int Weight
{
get
{
Console.WriteLine("Результат: ");
return weight;
}
set
{
if (value < 1)
{
weight = 1;
}
else
{
weight = value;
}
}
}
Здесь значения меньше 1 заменяются на 1.
Пример вызова аксессора
Вызов аксессора аналогичен обращению к полю:
object3.Weight = -100; // Установка значения
Console.WriteLine(object3.Weight); // Вывод значения
С добавленной проверкой выведется «Результат: » и значение 1.
Аксессоры без привязки к полю
Аксессор может существовать независимо от поля:
public int Beats
{
get; set;
}
Beats позволяет устанавливать и получать значения без связи с другим полем.
Контроль доступа
Модификаторы доступа public, private, protected управляют доступом к get и set:
public int MyField
{
get;
private set; // Установка только изнутри класса
}
Аксессоры обеспечивают удобный и чистый способ управления доступом к полям класса, позволяя добавлять логику проверки и обработки данных. Они предпочтительнее отдельных методов для установки и получения значений.