Я только что понял, что конструкцию свойства C # можно также использовать с модификатором частного доступа:
private string Password { get; set; }
Хотя это технически интересно, я не могу себе представить, когда бы я использовал его, поскольку личное поле требует еще меньше церемоний :
private string _password;
и я не могу себе представить, когда мне когда-нибудь понадобится иметь возможность получить, но не установить или установить, но не получить личное поле:
private string Password { get; }
или
private string Password { set; }
но, возможно, есть сценарий использования с вложенными / унаследованными классами или, возможно, где get / set может содержать логику, а не просто возвращать значение свойства, хотя я бы хотел сохранить свойства строго простыми и позволить явным методам выполнять любую логику, например GetEncodedPassword()
.
Кто-нибудь использует частные свойства в C # по какой-либо причине, или это просто одна из тех технически возможных, но редко используемых в коде конструкций?
добавление
Хорошие ответы, прочитав их, я выбрал эти варианты использования для частных объектов:
- когда приватные поля нужно лениво загружать
- когда приватные поля нуждаются в дополнительной логике или являются вычисляемыми значениями
- поскольку частные поля могут быть сложными для отладки
- для того, чтобы «представить себе контракт»
- внутренне преобразовать / упростить открытое свойство как часть сериализации
- обертывание глобальных переменных для использования внутри вашего класса