powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Свойство
24 сообщений из 24, страница 1 из 1
Свойство
    #38726459
Фотография vah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите пожалуйста,
чем свойство отличается от переменной?

Заранее благодарен.
...
Рейтинг: 0 / 0
Свойство
    #38726478
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vah,

Вот пример свойства:

Код: c#
1.
2.
3.
4.
public class MyClass
{
    public string MyField { get; set; }
}



А вот что такое свойство на самом деле:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class MyClass
{
    // это скрытое поле, которое хранит актуальные данные
    private string _myField;

    // это свойство, которое возвращает значение скрытого поля _myField, 
    // а при выполнении присваивания, присваивает значение скрытому полю _myField
    public string MyField
    {
        get
        {
            return _myField;
        }
        set
        {
            _myField = value;
        }
    }
}



Компилятор сам создаёт скрытое поле _myField. Свойство по сути -- это два или один из двух методов:

Код: c#
1.
TValue get_MyField();

и
Код: c#
1.
void set_MyField(TValue value);
...
Рейтинг: 0 / 0
Свойство
    #38726486
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос вроде как был не про auto-implemented properties, а про свойства вообще?
Свойства позволяют организовать разные уровни доступа к чтению и записи свойства. Например.
...
Рейтинг: 0 / 0
Свойство
    #38726488
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще эта тема уже не раз обсуждалась. Здесь, например: http://www.sql.ru/forum/1062298/get-set-nadeus-ne-skatimsya-v-holivor-a-to-realno-neponyatno
...
Рейтинг: 0 / 0
Свойство
    #38726549
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vah ,
Это обычный синтаксический сахар, не более.
...
Рейтинг: 0 / 0
Свойство
    #38726556
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vahСкажите пожалуйста,
чем свойство отличается от переменной?

Заранее благодарен.Свойство - это один или два метода.
...
Рейтинг: 0 / 0
Свойство
    #38727475
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vah,

Чем отличается понятно - а вот зачем оно нужно и полезно -

Гибкость. Можно делать вычисляемые свойства. То есть, не отдельная переменная, а вычисление прямо в методе get
В методе set можно делать обратный процесс (при необходимости) - разобрать значение на части, или выполнить попутные действия.
Например, в WPF - на свойствах построен байндинг, отображение значений на экране - в каждом свойстве в методе set - вызываетя эвент (стандартный), на который подписана система отображения, и экран получает новое значение сразу после изменения значения.
...
Рейтинг: 0 / 0
Свойство
    #38727480
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv vah ,
Это обычный синтаксический сахар, не более.

Нет. Гораздо более. На уровне рефлексии, свойства отличаются от полей, иначе это были бы просто методы. Так что не надо пороть чушь.
...
Рейтинг: 0 / 0
Свойство
    #38727484
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНа уровне рефлексии, свойства отличаются от полей...К огромному сожалению... Странно, что Свеном об этом молчит.
...
Рейтинг: 0 / 0
Свойство
    #38727487
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhVosttНа уровне рефлексии, свойства отличаются от полей...К огромному сожалению... Странно, что Свеном об этом молчит.
А в джаве запарка с этим.
Свойств-то нету - на каждую переменную пишется пара методов с названием get-set....
:-)
...
Рейтинг: 0 / 0
Свойство
    #38727490
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129Алексей Кпропущено...
К огромному сожалению... Странно, что Свеном об этом молчит.
А в джаве запарка с этим.
Свойств-то нету - на каждую переменную пишется пара методов с названием get-set....
:-)Хмм... да действительно.
...
Рейтинг: 0 / 0
Свойство
    #38727495
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КСвойство - это один или два метода.вот эта мысль самая важная, из нее следует:
1) свойство, в отличие от переменной, можно объявить в интерфейсе
2) в дочернем классе можно переопределить только один из этих методов базового класса, то есть можно переопределить геттер, не трогая сеттер и наоборот.
...
Рейтинг: 0 / 0
Свойство
    #38727496
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttcdtyjv vah ,
Это обычный синтаксический сахар, не более.

Нет. Гораздо более. На уровне рефлексии, свойства отличаются от полей, иначе это были бы просто методы. Так что не надо пороть чушь.Ну так это и есть то, что называют «синтаксическим сахаром»: взяли поле, обернули его в два метода, а потом гордо сказали , что это не метод, а свойство. Вы сравните IL вызова свойства и метода - обычный виртуал кол. Хватит позориться уже.
...
Рейтинг: 0 / 0
Свойство
    #38727501
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvНу так это и есть то, что называют «синтаксическим сахаром»: взяли поле, обернули его в два метода, а потом гордо сказали , что это не метод, а свойство. Вы сравните IL вызова свойства и метода - обычный виртуал кол. Хватит позориться уже.

Вы не прочитали - это не обязательно должно быть поле.
...
Рейтинг: 0 / 0
Свойство
    #38727508
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129cdtyjvНу так это и есть то, что называют «синтаксическим сахаром»: взяли поле, обернули его в два метода, а потом гордо сказали , что это не метод, а свойство. Вы сравните IL вызова свойства и метода - обычный виртуал кол. Хватит позориться уже.

Вы не прочитали - это не обязательно должно быть поле.А это то здесь причем? Если у вас у свойства есть тело, то отличи от метода еще меньше.
...
Рейтинг: 0 / 0
Свойство
    #38727518
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvhVosttпропущено...


Нет. Гораздо более. На уровне рефлексии, свойства отличаются от полей, иначе это были бы просто методы. Так что не надо пороть чушь.Ну так это и есть то, что называют «синтаксическим сахаром»: взяли поле, обернули его в два метода, а потом гордо сказали , что это не метод, а свойство. Вы сравните IL вызова свойства и метода - обычный виртуал кол. Хватит позориться уже.Тебе сказали, что в рефлекшене для доступа к полю и свойству используются разные классы, FieldInfo и PropertyInfo соответственно.
...
Рейтинг: 0 / 0
Свойство
    #38727553
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кcdtyjvпропущено...
Ну так это и есть то, что называют «синтаксическим сахаром»: взяли поле, обернули его в два метода, а потом гордо сказали , что это не метод, а свойство. Вы сравните IL вызова свойства и метода - обычный виртуал кол. Хватит позориться уже.Тебе сказали, что в рефлекшене для доступа к полю и свойству используются разные классы, FieldInfo и PropertyInfo соответственно.И? От этого свойства перестают быть синтаксическм сахаром?
...
Рейтинг: 0 / 0
Свойство
    #38727570
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvА это то здесь причем? Если у вас у свойства есть тело, то отличи от метода еще меньше.

Снаружи - это "поле". Инкапсуляция. Нельзя вызвать, только присвоить значение, или использовать в выражении.


cdtyjvАлексей Кпропущено...
Тебе сказали, что в рефлекшене для доступа к полю и свойству используются разные классы, FieldInfo и PropertyInfo соответственно.И? От этого свойства перестают быть синтаксическм сахаром?

Синтаксический сахар - только когда не надо самому создавать приватную переменную,
при создании свойств без "тела".

Код: c#
1.
public int MyProperty { get; set; }
...
Рейтинг: 0 / 0
Свойство
    #38727581
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvНу так это и есть то, что называют «синтаксическим сахаром»: взяли поле, обернули его в два метода, а потом гордо сказали , что это не метод, а свойство. Вы сравните IL вызова свойства и метода - обычный виртуал кол. Хватит позориться уже.

При чём тут вообще поле?
Свойства это свойства, методы это методы.
Свойство реализуется одним или двумя методами, но от этого оно не перестаёт быть свойством.

Поэтому не стоит умничать, без знания предмета. А то получается услышал звон, да не знаю где он.
...
Рейтинг: 0 / 0
Свойство
    #38727583
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvИ? От этого свойства перестают быть синтаксическм сахаром?

«синтаксический сахар» это авто-проперти { get; set;}, а сами свойства не являются «синтаксическим сахаром» и никогда им не были.

Иди почитай букварь что ли. Зачем так позориться?
...
Рейтинг: 0 / 0
Свойство
    #38727596
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvАлексей Кпропущено...
Тебе сказали, что в рефлекшене для доступа к полю и свойству используются разные классы, FieldInfo и PropertyInfo соответственно.И? От этого свойства перестают быть синтаксическм сахаром?Что такое "синтаксический сахар"? Попахивает "контрреволюцией". Понимаешь о чём я?

Но тебе сразу сказали о рефлексии, а не о генерации компилятором методов-акцессоров свойств.

зы: Java уг
...
Рейтинг: 0 / 0
Свойство
    #38727620
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги ,
У вас почему словосочетание "синтаксический сахар" такую истерику вызывает? Вы считаете это чем-то плохим?
...
Рейтинг: 0 / 0
Свойство
    #38727653
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv Коллеги ,
У вас почему словосочетание "синтаксический сахар" такую истерику вызывает? Вы считаете это чем-то плохим?

Wikipedia«Синтаксический сахар» — это любой элемент синтаксиса языка программирования, который даёт программисту альтернативный способ записи другой, уже имеющейся в языке синтаксической конструкции, и при этом является более удобным, или более кратким, или похожим на другой распространённый способ записи, или помогает писать программы в хорошем стиле.

Свойство не является альтернативной записью другой синтаксической конструкции. Если бы это было так, то при компиляции понятие «свойство» бы полностью терялось, превращаясь в одно/пару методов, а рефлексия давала бы именно методы, но это не так. У класса есть поля, свойства и методы. До компиляции и после. Таким образом есть возможность в рантайме расковырять класс и получить его свойства, а также атрибуты свойства, на этом принципе основывается практически весь имеющийся байндинг в .NET, отслеживание изменений (NotifyPropertyChanges), а также сериализация/десериализация.

Вот авто-проперти это да, это «синтаксический сахар». Раньше не было авто-пропертей, потом они появились, при чём для IL никакой разницы нет, так как авто-проперти существуют только до компиляции, именно как «синтаксический сахар».

Так каким местом ты сюда понятие «синтаксический сахар» присобачил, я не понимаю? Мозг-то есть вообще? Может стоит сходить на рынок и приобрести хоть плохонький?

Это не истерика, а недоумение: либо ты полный профан и ламак, тогда чушь которую ты в последнее время несёшь простительна. Либо одно из двух.
...
Рейтинг: 0 / 0
Свойство
    #38727762
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vahСкажите пожалуйста,
чем свойство отличается от переменной?

Заранее благодарен.
Свойство описывает состояние объекта и может управлять его поведением.
А вот под переменной что Вы понимаете?
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Свойство
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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