Закрытые свойства могут быть очень полезны для инкапсуляции поведения вещей, которые являются внутренними для вашего класса. Тот факт, что они являются частными, не означает, что вы не должны пользоваться синтаксическим сахаром, который дают вам свойства.
Однако приведенный пример плохой. Подобные методы получения и установки свойств Boilerplate почти всегда являются плохой идеей. Если вы используете C # 3.0 или более позднюю версию, тогда гораздо лучше использовать свойства auto :
private string Whatever { get; set; };
Это короче, чище и гораздо более читабельно. На самом деле это чуть больше, чем просто объявление переменной поддержки.
Самое главное, что автоматические свойства могут быть преобразованы в полные свойства в любое время без изменения семантики остальной части программы! Таким образом, если вам нужно добавить проверку или обработку ошибок, вы можете сделать это легко.
На самом деле, я всегда думал, что это позор, что у вас не может быть свойства только для чтения, чтобы обеспечить возможность только записи значения в конструкторе (я предпочитаю неизменяемые типы ), но это было добавлено в C # 6.0 как «Инициализаторы авто-свойства», что позволяет делать:
private string Whatever { get; } = ...;
или
private string Whatever { get; };
вместе с
Whatever = ...;
в конструкторе.