Что такое свойства в C#?
Что такое свойства в C#? Как работают аксессоры? В чем разница между get и set? И для каких задач используют свойства?
>Что такое свойства в C#?
Свойства в ООП это и есть свойства объектов реального мира, моделируемых объектной моделью. Если у тебя есть зеленое мусорное ведро с крышкой, значит у него есть цвет, объем, возможность быть открытым или закрытым. Вот это вот и есть свойства.
>Как работают аксессоры?
При попытке узнать или установить значение свойства вызываются аксессоры, которые и устанавливают или возвращают эти значения по своему усмотрению, а также контролируют допустимые диапазоны значений и все прочее.
>В чем разница между get и set?
Они диаметрально противоположны.
>И для каких задач используют свойства?
Ни для каких особенных "задач". Это просто особенность моделирования объектов.
Еще один такой интересный момент. В отличие от полей, свойства в самом общем случае не занимают память. Свойство может быть основано на каких-то других свойствах или данных, быть связано с текущим состоянием внешних устройств и т. д.. Аксесор определяет доступ к свойству и вернет его значение по запросу, необязательно из памяти.
Это как поле (глобальная переменная на уровне класса), но поле, скрытое за методами. Метод Get возвращает значение, метод Set устанавливает значение. А нужно, в отличии от обычного поля, для того, чтобы класс мог контролировать доступ к своему полю. Чтобы он мог при желании перехватить такой запрос и что-то с этим сделать. Можно прописать свойство по-умолчанию.
public int MyProp { get; set; }
А можно для get и set прописать логику.
Тогда доступ к такому свойству происходит так:
myObj.MyProp = 1;
А почему в категории Java?