Страницы

Поиск по вопросам

воскресенье, 8 декабря 2019 г.

Для чего нужны get и set? [дубликат]

#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 и сопутствующих языков программирования. Причина в том, что свойства выглядят как поля, на самом деле являясь методами.» пруф.

Комментариев нет:

Отправить комментарий