Почему это:
public string Foo {get;set;}
рассмотренный лучше, чем это:
public string Foo;
Я не могу ни за что в жизни разработать его. Кто-либо может пролить некоторый свет?
Спасибо
Поскольку вы можете прозрачно (с точки зрения клиентского кода) изменить реализацию установщика / получателя, тогда как вы не можете сделать то же самое, если вы напрямую открываете базовое свойство (поскольку оно не будет двоично-совместимым).
Существует Тем не менее, определенный запах кода, связанный с автоматическими свойствами, позволяет легко раскрыть некоторую часть состояния вашего класса, не задумываясь. Это также произошло с Java, где во многих проектах вы найдете пары get / setXxx
повсюду, раскрывая внутреннее состояние (часто без необходимости, «на всякий случай»), что существенно отображает свойства. общественные.
В то время как цель поля - это состояние объекта хранилище , цель свойства - просто доступ . Разница может быть скорее концептуальной, чем практической, но автоматические свойства предоставляют удобный синтаксис для объявления обоих.