#c_sharp
This question already has answers here:
Для чего нужны свойства?
(6 ответов)
Closed 2 года назад.
Можете написать пожалуйста простым языком, для чего нужно в C#.NET?
{ get; set;}
Ответы
Ответ 1
это геттер и сеттер для свойства: раньше, даже в java сейчас, для более удобного доступа к инкапсулированым полям классов пользовались парами методов : getField(); setField(value); работали они примерно следующим образом: class SomeClass { ... private int _value; ... public int getValue() { return _value; } ... public void setValue(int value) { this._value = value >= 0 ? value : 0;// таким образом не допускали ввода отрицательного значения } ... } в С# решили упростить это действие введя геттер - get{}, и сеттер set{} для свойств ... public int Value { get { return _value; } set { this._value = value >=0 ? value : 0; } } ... Таким образом вы можете полностью контролировать операции получения каких-то свойств или их изменения: Контролировать изменяемые значения Выбрасывать исключения Вызывать события ...да всё что душе угодно Более интересный пример: class Light { private bool _isOn = false; private bool _isOff = true; public bool ON { get { return _isOn; } set { _isOn = value; _isOff = !value; } } public bool OFF { get { return _isOff; } set { _isOff = value; _isOn = !value; } } } Но на самом деле компилятор всё равно преобразовывает эти действия в методы: get_Value(); и set_Value(int value);(не помню точный синтаксис преобразования) Где-то читал, что Джефри Рихтер критикует эту фичу C#, т.к. это всего лиш синтаксический сахар «Лично мне свойства не нравятся, и я был бы рад, если бы их поддержку убрали из Microsoft .NET Framework и сопутствующих языков программирования. Причина в том, что свойства выглядят как поля, на самом деле являясь методами.» пруф.
Комментариев нет:
Отправить комментарий