Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Свойство / 24 сообщений из 24, страница 1 из 1
22.08.2014, 11:58
    #38726459
vah
vah
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свойство
Скажите пожалуйста,
чем свойство отличается от переменной?

Заранее благодарен.
...
Рейтинг: 0 / 0
22.08.2014, 12:06
    #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
22.08.2014, 12:10
    #38726486
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свойство
Вопрос вроде как был не про auto-implemented properties, а про свойства вообще?
Свойства позволяют организовать разные уровни доступа к чтению и записи свойства. Например.
...
Рейтинг: 0 / 0
22.08.2014, 12:11
    #38726488
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свойство
А вообще эта тема уже не раз обсуждалась. Здесь, например: http://www.sql.ru/forum/1062298/get-set-nadeus-ne-skatimsya-v-holivor-a-to-realno-neponyatno
...
Рейтинг: 0 / 0
22.08.2014, 12:49
    #38726549
cdtyjv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свойство
vah ,
Это обычный синтаксический сахар, не более.
...
Рейтинг: 0 / 0
22.08.2014, 12:53
    #38726556
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Свойство
vahСкажите пожалуйста,
чем свойство отличается от переменной?

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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