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