Блиц-вопрос по C#
Alex Che, 2009-09-22 1:57
Сможете ли быстро назвать три преимущества, которые дает использование автоматических свойств (automatic properties) против использования открытых полей в классе?
То есть, чем следующее объявление
То есть, чем следующее объявление
public string Foo{ get; set; } лучше этогоОтвет (как это часто бывает) на StackOverflow.public string Foo;
Ярлыки: csharp

Комментарии: 3:
1. Выполняется принцип инкапсуляции
2. Можно настраивать доступ - get и set, только get, только set.
3. Для методов свойства get и set можно устанавливать модификаторы доступа
4. Методы get и set могут содержать дополнительный код
1 и 4 я бы объединил, поскольку инкапсуляция (1) и позволяет впоследствии добавить дополнительный код (4), не нарушая контракта.
2 - для автоматических свойств надо задавать и get, и set. Ограничение доступа решается как раз через модификаторы доступа (3).
Ну и к вышеперечисленному - для свойств возможен data binding.
С объединением 1 и 4 не совсем согласен. В методы get и set можно добавить функционал, не связанный прямо с изменением значений внутренних элементов класса (вывод на экран, например). На мой взгляд, утверждение того, что наличие такого функционала служит выполнению принципа инкапсуляции, было бы "притяжкой за уши".
С замечанием по моему п.2 согласен (но задача ведь стояла - "быстро" =) )
А про data binding - спасибо, буду знать
Отправить комментарий
Подпишитесь на каналы Комментарии к сообщению [Atom]
<< Главная страница