Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2015, 17:05   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Свойства - C++/CLI

Добрый день !

Как я понял свойства используют для чтения и записи данных в закрытые поля класса через какую-ту левую переменную как тут. (идет вызов функции get или set)

Код:
ref class Person
{
   int age;
public:
Person() {Age = 0;}
property int Age
{
int get() { return age; }
void set(int val) {age = val; }
}
};
 
p->Age = -77;
теперь если сделать так

Код:
ref class Person
{
   int age;
public:
Person() {Age = 0;}
property int Age;      // ????????????????
};
 
p->Age = -77;
то код тоже работает, но теперь при выполнении p->Age = -77; age не принимает значения -77

почему ?

строка property int Age; как я понял аналог int Age;

так а к чему тогда тут слово property ?
RAFA91 вне форума Ответить с цитированием
Старый 26.10.2015, 17:44   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Ну логично же что во втором коде нет никакой записи в age, а Age и age ничем не связаны.
второй код это - автосвойство, и оно под себя генерирует закрытое поле и использует его.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.10.2015, 15:28   #3
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
второй код это - автосвойство, и оно под себя генерирует закрытое поле и использует его.
так это тоже самое если бы я в поле public: втулил переменную int Age;

в чкм тогда фишка использования property int Age; ?
RAFA91 вне форума Ответить с цитированием
Старый 27.10.2015, 15:37   #4
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Свойство можно например прибиндить, а поле нет. читайте мсдн.
come-on вне форума Ответить с цитированием
Старый 27.10.2015, 15:45   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

https://www.google.com/search?q=auto+property+vs+field
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.10.2015, 15:50   #6
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

ПРИЧКМ ТУТ СИ ШАРП да притом на английском ?

что русскоязычных нету ?
Цитата:
Сообщение от come-on Посмотреть сообщение
Свойство можно например прибиндить, .
свойство это как я понял конструкция которая содержит в себе

функции get() и set для доступа к закрытым полям , или тут еще есть

какая-то фишка ?

Последний раз редактировалось RAFA91; 27.10.2015 в 15:53.
RAFA91 вне форума Ответить с цитированием
Старый 27.10.2015, 16:08   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

свойство это еще и метаинформация о нем, а не только два метода.(а в метаинформации может быть много вкусностей зарыто ^^)
Цитата:
ПРИЧКМ ТУТ СИ ШАРП да притом на английском ?
это для дотнета в целом.
а насчет англа мы вам не помощники, переводчик в помощь.
Цитата:
в чкм тогда фишка использования property int Age; ?
конкретно тут нету.
но если брать нормальные примеры то там может быть прикручен аттрибут читаемого имени свойства.
в set стоять проверка на допустимый возраст и тп.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.10.2015, 16:15   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
ПРИЧКМ ТУТ СИ ШАРП да притом на английском ?
На английском всегда больше/лучше по программированию и подобным темам, если это не 1С какой-нибудь.
А C# потому что это видимо одинаково для обоих языков, а на C++/CLI никто не пишет (ну или кто пишет те знают и C#).
Ну и если уж так хочется на русском, то написали б аналогичный запрос на русском, и увидели б что выдаются гораздо менее релевантные результаты.
Цитата:
какая-то фишка ?
Ну дык выше и написана одна из фишек. Биндинг в WPF и WinForms работает только для свойств.
Еще при наследовании можно переопределять virtual свойства.
Еще автосвойство проще поменять в будущем на обычное свойство, чем поле. И в нем можно сделать например public get и private set (по крайней мере в C#).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 27.10.2015 в 16:17.
Alex11223 вне форума Ответить с цитированием
Старый 27.10.2015, 16:49   #9
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

В интерфейсам полей нет.
Да много каких фишек, со временем придет понимание.
come-on вне форума Ответить с цитированием
Старый 27.10.2015, 18:07   #10
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
фишка ?
про инкапсуляцию слышали?
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дебаг С++/CLI Максим 116 Помощь студентам 3 27.12.2013 22:17
Ошибки в C++/CLI Максим 116 Помощь студентам 2 25.12.2013 22:45
c++/cli danzel1 Общие вопросы C/C++ 3 25.07.2011 17:11
C/C++/CLI. Ynxarmed Visual C++ 1 31.08.2010 07:43
advapi32 и C++/CLI Artem89 Общие вопросы .NET 1 20.12.2009 18:22