Własności prywatne mogą być bardzo przydatne do opisania zachowania rzeczy, które są wewnętrzne dla twojej klasy. To, że są prywatne, nie oznacza, że nie powinieneś korzystać z cukru syntaktycznego, który dają ci właściwości.
Podany przykład jest jednak kiepski. Obiekty pobierające i ustawiające właściwości typu Boilerplate są prawie zawsze złym pomysłem. Jeśli używasz C # 3.0 lub nowszego, właściwości automatyczne są znacznie lepszym pomysłem:
private string Whatever { get; set; };
Jest to krótsze, czystsze i znacznie bardziej czytelne. W rzeczywistości jest to niewiele więcej niż tylko zadeklarowanie zmiennej bazowej.
Co najważniejsze, właściwości automatyczne można w dowolnym momencie przekonwertować na pełne właściwości bez zmiany semantyki reszty programu! Dlatego jeśli chcesz dodać sprawdzanie poprawności lub obsługę błędów, możesz to zrobić z łatwością.
W tej chwili zawsze myślałem, że szkoda, że nie można mieć właściwości tylko do odczytu, aby wymusić jedynie możliwość zapisu do wartości w konstruktorze ( wolę typy niezmienne ), ale zostało to dodane w C # 6.0 jako „Inicjatory automatycznych właściwości”, które umożliwiają:
private string Whatever { get; } = ...;
lub
private string Whatever { get; };
wraz z
Whatever = ...;
w konstruktorze.