Назначение автоматических свойств в .NET - PullRequest
8 голосов
/ 02 августа 2010

Почему это:

    public string Foo {get;set;}

считается лучше, чем это:

    public string Foo;

Я не могу за всю свою жизнь решить это.Кто-нибудь может пролить свет?

Спасибо

Ответы [ 2 ]

12 голосов
/ 02 августа 2010

Поскольку вы можете прозрачно (с точки зрения клиентского кода) изменить реализацию метода установки / получения, то вы не сможете сделать то же самое, если будете напрямую предоставлять базовое свойство (поскольку оно не будет двоично-совместимым.)

Существует определенный запах кода, связанный с автоматическими свойствами, тем не менее, поскольку они позволяют без труда обдумать некоторую часть состояния вашего класса, не задумываясь.Это также относится и к Java, где во многих проектах вы найдете get/setXxx пары повсюду, демонстрирующие внутреннее состояние (часто без какой-либо необходимости, «на всякий случай»), что делает свойства по существу открытыми.

1 голос
/ 02 августа 2010

Хотя целью поля является состояние объекта хранилища , целью свойства является просто доступ .Разница может быть скорее концептуальной, чем практической, но автоматические свойства обеспечивают удобный синтаксис для объявления обоих.

...