powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / get; set; надеюсь не скатимся в холивор, а то реально непонятно.
25 сообщений из 196, страница 1 из 8
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481516
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что меня волнует
Как нам рассказывают Рихтер и Троеслон, если мы добавляем после имени public переменной в классе {get; set;} то создается не видимая в классе переменная, а описанная нами переменная превращается в поле для работы с ней(надеюсь я понятно объяснил, если кто не в курсе). Это сделано для поддержания принципа инкапсуляции. То есть, с точки зрения компилятора разница есть в том что бы добавить или не добавлять {get; set;} , с точки зрения кодера разницы нет, даже с точки зрения логики работы с этим полем разницы нет. Хоть номинально это поле остается инкапсулированным, но на логику работы с ним это никак не влияет и все внешние объекты имеют все права на работу с этим полем.
У меня складывается ощущение, что конструкция {get; set;} нужна только номинального соблюдения принципа инкапсуляции, в то время, как сама суть инкапсуляции - закрытость внутренних полей для внешних объектов теряется. Понятно что конструкция
Код: c#
1.
2.
3.
4.
5.
Perem1
{
get{return perem1;}
set{perem1=value;}
}


это нормальная инкапсуляция, но {get; set;} кажется бесполезной ширмой.
Может есть какие то преимущества на уровне скомпилированного кода?
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481535
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял. Смысл вопроса, в чем свойство лучше публичного поля?
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481536
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
* публичной переменной?
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481553
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чем лучше, в принципе, я понимаю, я не понимаю как конструкция {get; set;} реализует эти преимущества?
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481561
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая нафик инкапсуляция, какая невидимая переменная? :) Это сахар.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481566
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я чего не понимаю, но сахар обычно сокращает объем кода, а тут как то наоборот получается.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481570
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTEМожет я чего не понимаю, но сахар обычно сокращает объем кода, а тут как то наоборот получается.
Разницу между свойством и полем понимаем?
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481571
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сути, автосвойства -- синтаксический сахар, но вот в чем их плюсы по сравнению с полями:

1. Data Binding работает со свойствами, с полями -- нет
2. В определении интерфейсов можно перечислять свойства, но не поля
3. Замена поля свойством -- Breaking Change , а замена автосвойства на обычное поле с Backing Field -- нет
4. Свойство может быть read-only, поле -- нет
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481572
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTEВ чем лучше, в принципе, я понимаюРасскажи, а то мне кажется, ты о чем-то своём, никому неведомом.

ALOTEя не понимаю как конструкция {get; set;} реализует эти преимущества?Фигурными скобками.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481583
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyРасскажи, а то мне кажется, ты о чем-то своём, никому неведомом.
Рассказать чем закрытое поле лучше открытого? Я могу, но информация то общедоступная, так что повторять за классиками не буду.
AntonariyALOTEя не понимаю как конструкция {get; set;} реализует эти преимущества?Фигурными скобками.
Спасибо, кэп, а на уровне логики?
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481586
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НахлобучПо сути, автосвойства -- синтаксический сахар, но вот в чем их плюсы по сравнению с полями:

1. Data Binding работает со свойствами, с полями -- нет
2. В определении интерфейсов можно перечислять свойства, но не поля
3. Замена поля свойством -- Breaking Change , а замена автосвойства на обычное поле с Backing Field -- нет
4. Свойство может быть read-only, поле -- нет5. Поле только хранит значение, свойство может выполнять разные действия.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481598
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем, издавна сложилась практика использовать поля только для внутренних работ в классе. Светить их наружу считается моветоном. Хотя есть и плюс у полей, они быстрее. В случае с простыми типами JIT будет помогать и выравнивать этот перевес.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481603
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
О, понятно, спасибо.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481607
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTEAntonariyРасскажи, а то мне кажется, ты о чем-то своём, никому неведомом.
Рассказать чем закрытое поле лучше открытого? Я могу, но информация то общедоступная, так что повторять за классиками не буду.Рассказать, что за каша у тебя в голове. Что за открытые и закрытые поля, ты где такой терминологии нахватался?
Есть поля, есть свойства, есть публичные, есть приватные. Определись, что с чем сравниваешь.

ALOTEAntonariyпропущено...
Фигурными скобками.
Спасибо, кэп, а на уровне логики?На уровне логики твой вопрос не имеет смысла.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481608
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTEAntonariy,
О, понятно, спасибо.Ок.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481611
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВообщем, издавна сложилась практика использовать поля только для внутренних работ в классе. Светить их наружу считается моветоном. Хотя есть и плюс у полей, они быстрее. В случае с простыми типами JIT будет помогать и выравнивать этот перевес.
Да это то ясно было, только казалось что свойства формируемые по средствам {get; set;} - бутафорская прослойка, не несущая никакой функциональной пользы. Antonariy хорошо объяснил функциональные(а точнее ООПэшные) преимущества.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481621
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyALOTEЧто за открытые и закрытые поля, ты где такой терминологии нахватался?
http://msdn.microsoft.com/ru-ru/library/6ztex2dc(v=vs.110).aspx Чтобы включить в поиск открытые поля, нужно задать флаг BindingFlags.Public.

Чтобы включить в поиск закрытые, внутренние и защищенные поля, нужно задать флаг BindingFlags.NonPublic



P.S. Не придирайся.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481741
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ildasm, ilspy итд дадут ответ на все вопросы
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481763
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилildasm, ilspy итд дадут ответ на все вопросыценный совет, ага
человек, знакомый с ildasm, ilspy итд, не задаст таких вопросов
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481777
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ildasm.exe изучается в любом букваре по дотнету в первой же главе, приводятся детские примеры, анализируется мсил. Любая кодирующая обезьянка ковыряла мсил, читала эту главу, осознавала суть бытия. По началу интересно, потом понимаешь, что в реальной жизни это нах не нужно.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481839
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTE,
5 акцессор и мутатор могут иметь разную видимость
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481842
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч3. Замена поля свойством -- Breaking Change , а замена автосвойства на обычное поле с Backing Field -- нетТакая замена вызовет необходимость перекомпиляции вызывающего кода. Если поле видно только внутри сборки (internal), или есть возможность перекомпилировать зависимые сборки - то вроде как ничего страшного.
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481862
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALOTE,

почитай Шилдта
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481887
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шилдта мало, надо еще: Брайан Керниган, Бьёрн Страуструп, Деннис Ритчи, Джеймс Гослинг, Чарльз Петцольд, Джеф Просиз, Джеффри Рихтер, Марк Руссинович, Скотт Гатри, Андерс Хейлсберг, Рэй Оззи, Стивен Синофски и Майкл Абраш
...
Рейтинг: 0 / 0
get; set; надеюсь не скатимся в холивор, а то реально непонятно.
    #38481894
ALOTE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
забыли Кнута, Фаулера и Троелсона.
...
Рейтинг: 0 / 0
25 сообщений из 196, страница 1 из 8
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / get; set; надеюсь не скатимся в холивор, а то реально непонятно.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]