Блог

Блиц-вопрос по C#


Сможете ли быстро назвать три преимущества, которые дает использование автоматических свойств (automatic properties) против использования открытых полей в классе?
То есть, чем следующее объявление
public string Foo{ get; set; }
лучше этого
public string Foo;

Ответ (как это часто бывает) на StackOverflow.

Ярлыки:


Комментарии: 3:

В 7 июня 2011 г., 16:12 , Blogger Forkkk сказал(а)...

1. Выполняется принцип инкапсуляции
2. Можно настраивать доступ - get и set, только get, только set.
3. Для методов свойства get и set можно устанавливать модификаторы доступа
4. Методы get и set могут содержать дополнительный код

 
В 7 июня 2011 г., 18:47 , Blogger Alex Che сказал(а)...

1 и 4 я бы объединил, поскольку инкапсуляция (1) и позволяет впоследствии добавить дополнительный код (4), не нарушая контракта.

2 - для автоматических свойств надо задавать и get, и set. Ограничение доступа решается как раз через модификаторы доступа (3).

Ну и к вышеперечисленному - для свойств возможен data binding.

 
В 13 июля 2011 г., 12:08 , Blogger Forkkk сказал(а)...

С объединением 1 и 4 не совсем согласен. В методы get и set можно добавить функционал, не связанный прямо с изменением значений внутренних элементов класса (вывод на экран, например). На мой взгляд, утверждение того, что наличие такого функционала служит выполнению принципа инкапсуляции, было бы "притяжкой за уши".

С замечанием по моему п.2 согласен (но задача ведь стояла - "быстро" =) )

А про data binding - спасибо, буду знать

 

Отправить комментарий

Подпишитесь на каналы Комментарии к сообщению [Atom]

<< Главная страница

Optixsoft - Разработка ПО для волоконной оптики. 2013. Все права сохранены.