Он обеспечивает один фрагмент инкапсуляции: он говорит: «Есть свойство Age, которое вы можете получить и установить, но я не буду рассказывать вам, как я его реализую».
Это не очень сильная инкапсуляция, но делает отделением деталей реализации от общедоступного API.Совершенно не меняя общедоступный API, вы можете начать хранить возраст где-то еще - в двух полях short
, где-то в службе, как часть поля long
или чего-либо еще.Вы можете добавить логирование в свойстве, чтобы увидеть, как часто оно используется.Вы можете добавить событие, которое запускается при изменении возраста (это изменение API, но не нарушает существующих абонентов).
РЕДАКТИРОВАТЬ: Одна вещь, на которую следует обратить внимание: даже если это ничего не делает сейчас, изменение на make он делает что-то позднее, совместимо как с исходным кодом, так и с двоичным кодом.Изменение поля для использования в качестве свойства не обратно совместимо как в исходном, так и в двоичном виде.В большинстве случаев это будет совместимо с исходным кодом, но не двоично-совместимым.В некоторых случаях источник больше не будет собираться.В большем количестве зла (и надуманного, по общему признанию) будут построены обе версии, но с различными эффектами.
Также обратите внимание, что начиная с C # 3, вы можете объявить тривиальное свойство так же легко, как поле:*
У меня есть статья обо всем этом , которая предоставляет более подробную информацию.