| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Вопрос о свойствах |
| Автор: ДобренькийПапаша 2.8.2010, 13:33 |
| 1) Зачем нужны автоматические свойства, если в них не реализуется логика инкапсуляции? Я за синтаксический сахар, но эта ситуация мне непонятна. 2) В чём отличие свойства с одним get (свойство только для чтения) и свойства с private set (в данном случае можно красиво обращаться к полю через свойство только в задающем его классе)? Не проще ли всегда использовать private set, ибо наглядней это? |
| Автор: jonie 2.8.2010, 13:47 | ||||||||
|
| Автор: ДобренькийПапаша 2.8.2010, 14:01 |
| Второй случай понял. А в первом случае получается, что смысл есть только именно в той конструкции, которую вы привели. То есть в автоматическом свойстве без указания модификаторов доступа смысла ноль. |
| Автор: Gleb 2.8.2010, 21:42 | ||||
| Все это по сто раз обсасывалось с появлением сначала свойств, а потом и автоматических свойств. Гугл мне не даст соврать. Почитайте framework design guidelines 2nd edition. Если вкратце, то есть соглашение отделять поля класса, свойства и методы. Поля для внутренних нужд. Если я вижу поле, я знаю, что оно не будет public и не будет такого
Свойства нужны для взаимодействия с внешним миром, они описывают состояние объекта. Они публичны. Конструкция типа
нужна, например, для инициализации свойств значениями по умолчанию в конструкторе. Или если ваше свойство меняет значение где-то в коде класса между делом (например в ходе выполнения функции вы хотите сказать миру, что ваш класс больше не читаем и выставляете CanRead = false) С методами знакомы все. Вы можете спросить в чем отличие методов от свойств. Граница между ними весьма абстрактна, синтаксис позволяет вам делать все, но не забывайте о программистах, которые потом будут работать с вашим классом. Свойство - это что-то очень простое и быстрое. Вы можете прочитать его сто раз и ничего не случится и на производительности не скажется. Метод - это что-то тяжелое, результат выполнения метода - это результат выполнения Действия. С опытом разработки на C# вы начнете понимать это интуитивно. И еще раз, прочитайте framework design guidelines 2nd edition. |
| Автор: ДобренькийПапаша 2.8.2010, 22:50 | ||||||
Капитан очевидность. |