Во-первых, я прочитал список сообщений по этой теме, и я не чувствую, что у меня хватало свойства из-за того, что я понял, что касается инкапсуляции и модификаторов полей (private, public..ect).
Одним из основных аспектов С#, который я пришел узнать, является важность защиты данных в вашем коде с помощью инкапсуляции. Я подумал: "Я понял, что это связано с возможностью использования модификаторов (private, public, internal, protected). Однако, узнав о свойствах, я как бы разорван в понимании не только свойств, но и общей важности/способности защиты данных (что я понял как инкапсуляция) в С#.
Чтобы быть более конкретным, все, что я прочитал, когда получил свойства в С#, заключается в том, что вы должны попытаться использовать их вместо полей, когда сможете, из-за:
1) они позволяют вам изменять тип данных, когда вы не можете напрямую обращаться к полю.
2) они добавляют уровень защиты доступа к данным
Однако из того, что я "думал", что я узнал об использовании модификаторов полей, сделал №2, мне показалось, что свойства только что сгенерировали дополнительный код, если у вас не было причин менять тип (# 1) - потому что вы (более или менее) создаете скрытые методы для доступа к полям, а не напрямую.
Затем есть все модификаторы, которые могут быть добавлены в свойства, что еще более усложняет мое понимание необходимости использования свойств для доступа к данным.
Я прочитал несколько глав разных авторов о "свойствах", и ни один из них не объяснил хорошее понимание свойств и полей против инкапсуляции (и хороших методов программирования).
Может кто-нибудь объяснить:
1), почему я хотел бы использовать свойства вместо полей (особенно когда он появляется, я просто добавляю дополнительный код
2) любые советы по распознаванию использования свойств и не видя их в виде простых методов (за исключением того, что get: set быть очевидным) при отслеживании кода других людей?
3) Любые общие правила, когда дело доходит до хороших методов программирования относительно того, когда использовать что?
Спасибо и извините за длинный пост - я не хотел просто задавать вопрос, который был задан 100x, не объясняя, почему я спрашиваю его снова.