|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Что меня волнует Как нам рассказывают Рихтер и Троеслон, если мы добавляем после имени public переменной в классе {get; set;} то создается не видимая в классе переменная, а описанная нами переменная превращается в поле для работы с ней(надеюсь я понятно объяснил, если кто не в курсе). Это сделано для поддержания принципа инкапсуляции. То есть, с точки зрения компилятора разница есть в том что бы добавить или не добавлять {get; set;} , с точки зрения кодера разницы нет, даже с точки зрения логики работы с этим полем разницы нет. Хоть номинально это поле остается инкапсулированным, но на логику работы с ним это никак не влияет и все внешние объекты имеют все права на работу с этим полем. У меня складывается ощущение, что конструкция {get; set;} нужна только номинального соблюдения принципа инкапсуляции, в то время, как сама суть инкапсуляции - закрытость внутренних полей для внешних объектов теряется. Понятно что конструкция Код: c# 1. 2. 3. 4. 5.
это нормальная инкапсуляция, но {get; set;} кажется бесполезной ширмой. Может есть какие то преимущества на уровне скомпилированного кода? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:29 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Не понял. Смысл вопроса, в чем свойство лучше публичного поля? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:36 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
* публичной переменной? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:36 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
В чем лучше, в принципе, я понимаю, я не понимаю как конструкция {get; set;} реализует эти преимущества? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:41 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Какая нафик инкапсуляция, какая невидимая переменная? :) Это сахар. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:44 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Может я чего не понимаю, но сахар обычно сокращает объем кода, а тут как то наоборот получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:45 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTEМожет я чего не понимаю, но сахар обычно сокращает объем кода, а тут как то наоборот получается. Разницу между свойством и полем понимаем? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:46 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
По сути, автосвойства -- синтаксический сахар, но вот в чем их плюсы по сравнению с полями: 1. Data Binding работает со свойствами, с полями -- нет 2. В определении интерфейсов можно перечислять свойства, но не поля 3. Замена поля свойством -- Breaking Change , а замена автосвойства на обычное поле с Backing Field -- нет 4. Свойство может быть read-only, поле -- нет ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:46 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTEВ чем лучше, в принципе, я понимаюРасскажи, а то мне кажется, ты о чем-то своём, никому неведомом. ALOTEя не понимаю как конструкция {get; set;} реализует эти преимущества?Фигурными скобками. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:46 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
AntonariyРасскажи, а то мне кажется, ты о чем-то своём, никому неведомом. Рассказать чем закрытое поле лучше открытого? Я могу, но информация то общедоступная, так что повторять за классиками не буду. AntonariyALOTEя не понимаю как конструкция {get; set;} реализует эти преимущества?Фигурными скобками. Спасибо, кэп, а на уровне логики? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:50 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
НахлобучПо сути, автосвойства -- синтаксический сахар, но вот в чем их плюсы по сравнению с полями: 1. Data Binding работает со свойствами, с полями -- нет 2. В определении интерфейсов можно перечислять свойства, но не поля 3. Замена поля свойством -- Breaking Change , а замена автосвойства на обычное поле с Backing Field -- нет 4. Свойство может быть read-only, поле -- нет5. Поле только хранит значение, свойство может выполнять разные действия. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:51 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Вообщем, издавна сложилась практика использовать поля только для внутренних работ в классе. Светить их наружу считается моветоном. Хотя есть и плюс у полей, они быстрее. В случае с простыми типами JIT будет помогать и выравнивать этот перевес. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:54 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Antonariy, О, понятно, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:56 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTEAntonariyРасскажи, а то мне кажется, ты о чем-то своём, никому неведомом. Рассказать чем закрытое поле лучше открытого? Я могу, но информация то общедоступная, так что повторять за классиками не буду.Рассказать, что за каша у тебя в голове. Что за открытые и закрытые поля, ты где такой терминологии нахватался? Есть поля, есть свойства, есть публичные, есть приватные. Определись, что с чем сравниваешь. ALOTEAntonariyпропущено... Фигурными скобками. Спасибо, кэп, а на уровне логики?На уровне логики твой вопрос не имеет смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:57 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTEAntonariy, О, понятно, спасибо.Ок. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:58 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
МСУВообщем, издавна сложилась практика использовать поля только для внутренних работ в классе. Светить их наружу считается моветоном. Хотя есть и плюс у полей, они быстрее. В случае с простыми типами JIT будет помогать и выравнивать этот перевес. Да это то ясно было, только казалось что свойства формируемые по средствам {get; set;} - бутафорская прослойка, не несущая никакой функциональной пользы. Antonariy хорошо объяснил функциональные(а точнее ООПэшные) преимущества. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 12:59 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
AntonariyALOTEЧто за открытые и закрытые поля, ты где такой терминологии нахватался? http://msdn.microsoft.com/ru-ru/library/6ztex2dc(v=vs.110).aspx Чтобы включить в поиск открытые поля, нужно задать флаг BindingFlags.Public. Чтобы включить в поиск закрытые, внутренние и защищенные поля, нужно задать флаг BindingFlags.NonPublic P.S. Не придирайся. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 13:04 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ildasm, ilspy итд дадут ответ на все вопросы ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 14:04 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Изопропилildasm, ilspy итд дадут ответ на все вопросыценный совет, ага человек, знакомый с ildasm, ilspy итд, не задаст таких вопросов ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 14:11 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Ildasm.exe изучается в любом букваре по дотнету в первой же главе, приводятся детские примеры, анализируется мсил. Любая кодирующая обезьянка ковыряла мсил, читала эту главу, осознавала суть бытия. По началу интересно, потом понимаешь, что в реальной жизни это нах не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 14:17 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTE, 5 акцессор и мутатор могут иметь разную видимость ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 14:46 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Нахлобуч3. Замена поля свойством -- Breaking Change , а замена автосвойства на обычное поле с Backing Field -- нетТакая замена вызовет необходимость перекомпиляции вызывающего кода. Если поле видно только внутри сборки (internal), или есть возможность перекомпилировать зависимые сборки - то вроде как ничего страшного. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 14:47 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
ALOTE, почитай Шилдта ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 14:57 |
|
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
|
|||
---|---|---|---|
#18+
Шилдта мало, надо еще: Брайан Керниган, Бьёрн Страуструп, Деннис Ритчи, Джеймс Гослинг, Чарльз Петцольд, Джеф Просиз, Джеффри Рихтер, Марк Руссинович, Скотт Гатри, Андерс Хейлсберг, Рэй Оззи, Стивен Синофски и Майкл Абраш ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2013, 15:09 |
|
|
start [/forum/topic.php?fid=20&msg=38481839&tid=1403580]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 310ms |
total: | 465ms |
0 / 0 |