Аксессоры доступа к закрытым компонентам класса

Свойство в Си-шарп – это член класса, который предоставляет удобный механизм доступа к полю класса (чтение поля и запись). Свойство представляет собой что-то среднее между полем и методом класса. При использовании свойства, мы обращаемся к нему, как к полю класса, но на самом деле компилятор преобразовывает это обращение к вызову соответствующего неявного метода. Такой метод называется аксессор (accessor). Существует два таких метода: get (для получения данных) и set (для записи). Объявление простого свойства имеет следующую структуру:

[модификатор доступа] [тип] [имя_свойства]
{
get
{
// тело аксессора для чтения из поля
}

set
{
// тело аксессора для записи в поле
}
}


Приведу пример использования свойств. Имеется класс Студент, и в нем есть закрытое поле курс, которое не может быть ниже единицы и больше пяти. Для управления доступом к этому полю будет использовано свойство Year:

class Student
{
private int year; //объявление закрытого поля

public int Year //объявление свойства
{
get // аксессор чтения поля
{
return year;
}
set // аксессор записи в поле
{
if (value < 1)
year = 1;
else if (value > 5)
year = 5;
else year = value;
}
}
}
class Program
{
static void Main(string[] args)
{
Student st1 = new Student();
st1.Year = 0; // записываем в поле, используя аксессор set Console.WriteLine(st1.Year); // читаем поле, используя аксессор get, выведет 1
Console.ReadKey();
}
}


Проще говоря, в свойстве реализуются два метода. В теле аксессора get может быть более сложная логика доступа, но в итоге должно возвращаться значение поля, либо другое значение с помощью оператора return. В аксессоре set же присутствует неявный параметр value, который содержит значение, присваиваемое свойству (в примере выше, при записи, значение value равно «0»).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: