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