|
Master of Orion
|
|||||||||||
Зачем нужны автосвойства?12.07.2012, 18:05. Показов 20962. Ответов 15
Метки нет (Все метки)
Вот, возник такой интересный вопрос. Открытое автосвойство
0
|
|||||||||||
| 12.07.2012, 18:05 | |
|
Ответы с готовыми решениями:
15
Зачем нужны интерфейсы?
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 12.07.2012, 18:49 | ||
|
Про всякую скукоту типа стандартов и инкапсуляции говорить не буду.
0
|
||
|
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
|
|
| 12.07.2012, 18:56 | |
|
Основная причина состоит в том, что код, обращающийся к вашему элементу, после компиляции будет выглядеть иначе для свойства, чем для обычного поля. Поэтому, код, обращающийся к полю, приходится рекомпилить, при изменении поля на свойство. Свойство же более гибко, то есть, в дальнейшем вы сможете изменить/добавить необходимые действия в get/set без необходимости рекомпиляции всего кода, использующего ваши элементы.
http://stackoverflow.com/quest... lic-fields http://blogs.msdn.com/b/abhina... 72694.aspx
0
|
|
|
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
|
||
| 12.07.2012, 19:04 | ||
|
0
|
||
|
145 / 142 / 11
Регистрация: 11.09.2011
Сообщений: 417
|
|
| 12.07.2012, 19:28 | |
|
Jeff Atwood dealt with this a few years ago. The most important point he retrospectively noted is that changing from a field to a property is a breaking change in your code; anything that consumes it must be recompiled to work with the new class interface, so if anything outside of your control is consuming your class you might have problems.
Jeff Atwood сталкивался с этим пару лет назад. самое важное что он заметил это то, что изменение поля на свойство может серьезно повредить ваш код. все что работает с этим полем должно быть перекомпилировано, чтобы нормально работать с новым интерфейсом вашего класса. поэтому если что-то вне вашего контрола работает с вашим классом - у вас могут быть проблемы. это про то, что лучше сразу делать свойства, а не поля. чтобы потом не было проблем, если возникет необходимость переделать поле в свойство.
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 12.07.2012, 19:38 | ||
|
1
|
||
|
145 / 142 / 11
Регистрация: 11.09.2011
Сообщений: 417
|
|
| 12.07.2012, 19:39 | |
|
поправка - поэтому если что-то что не под вашем контролем работает с вашим классом - у вас могут быть проблемы.
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 12.07.2012, 19:42 | |
|
Psilon, свойства - это методы GetValue и SetValue.
Разница между ними и открытм полем такая же, как между переменной и функцией. Думаю, не сложно догадаться что случится, если заменить переменную на функцию и обратно, не обновив участки кода, где они используются.
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 12.07.2012, 19:45 | ||
|
А что будете делать, если вдруг потребуется осуществить проверку? Скажем, в классе обнаружился баг, когда внешняя система может присвоить неверное значение переменной и это надо пресечь.
0
|
||
|
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
|
||||||||||||||||
| 12.07.2012, 19:47 | ||||||||||||||||
Сообщение было отмечено как решение
Решение
Окей, пусть у нас есть сборка со следующим классом:
А причина вся в том, что свойства компилируется в методы со SpecialName атрибутами, и обращение к ним идет как к методам, а не к полям, несмотря на то, что шарповский сахар "прячет" это от программиста.
6
|
||||||||||||||||
|
145 / 142 / 11
Регистрация: 11.09.2011
Сообщений: 417
|
||
| 12.07.2012, 19:49 | ||
2
|
||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 12.07.2012, 19:51 | ||
|
И останется клиент, использующий софтину Василия, с неработающей программой и с солёным за щекой.
5
|
||
| 12.07.2012, 19:51 | |
|
Помогаю со студенческими работами здесь
16
Зачем нужны интерфейсы?
Зачем нужны делегаты?
Зачем в C# нужны указатели Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|