Задать вопрос
@kos_dev

Что лучше использовать в реальных проектах Свойства или Protected переменные и методы к ним?

Здравствуйте, подскажите, что и когда лучше использовать и в чем я не прав:
Свойства ( полагаю, что их следует использовать, если требуется получить значение поля вне класса )
или же
Protected поле ( видимо оно используется тогда, когда не требуется получить значение поля вне класса) и, если нам все-таки нужно его значение то методы к этому полю, пример ниже

class A
    {
        protected int v1; // protected

        public void setV1(int val)
        {
            if (val < 0) v1 = -1;
            else v1 = val;
        }
        public int getV1() { return v1; }


        private int _v2;
        public int v2 // prop
        {
            get
            {
                return _v2;
            }
            set
            {
                if (value < 0)
                    _v2 = -1;
                else _v2 = value;
            }
        }
    }
  • Вопрос задан
  • 130 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
мода на геттер/сеттер просто так, вроде как отходит.

самая фишка геттера и сеттера, что в них, как по триггеру, можно делать попутные действия. чаще всего валидаци или логгирование, но могут быть и более хитроумные завязки

вопрос защищенности поля, совершенно самостоятельный. надо отдельно изучать когда и зачем скрывать поля от других классов (private) или сборок (protectet)

стоит учесть что к сокрытию кода это вообще не имеет отношения. зато более чем важно для создания потокобезопасных классов/методов
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Vladev
Свойства. Пример с протектед - говнокод из C++, где свойств нет.

Если поле является protected, то подразумевается что его напрямую можно менять из всех классов, которые находятся в этом пространстве имен.
Если хочешь чтобы поле напрямую менялось отовсюду, то это публичная переменная.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы