Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 29.08.2022
Сообщений: 9

Автоматические свойства

03.09.2022, 15:33. Показов 1068. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста как посмотреть что скрыто внутри автоматического свойства (сниппет prop в VS):

C#
1
public int MyProperty { get; set; }
Я так понял что это сокращение вот этого варианта(сниппет propfull в VS):

C#
1
2
3
4
5
6
7
    private int myVar;
 
    public int MyProperty
    {
        get { return myVar; }
        set { myVar = value; }
    }
Те как именуется частная переменная та кот myVar?

Спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.09.2022, 15:33
Ответы с готовыми решениями:

Что лучше, свойства с приватной переменной или автоматические свойства?
Известно, что в классах свойства можно определить так: class MyClass { private int val; public int Val ...

Автоматические свойства get set
class Start { static void Main() { Test t = new Test(7); Console.WriteLine(t.a); //вывод 7 } }

Инкапсуляция, а именно автоматические свойства
Здравствуйте, уважаемые программисты. Помогите, пожалуйста, прояснить одну вещь. Кратко: какой смысл от автоматических свойств? Когда...

6
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
03.09.2022, 16:05
Лучший ответ Сообщение было отмечено aleksandr9000 как решение

Решение

Цитата Сообщение от aleksandr9000 Посмотреть сообщение
как посмотреть что скрыто внутри автоматического свойства
Декомпилятором. Например, ILSpy. Включите C# 1.0 чтобы увидеть полный код.

Цитата Сообщение от aleksandr9000 Посмотреть сообщение
Те как именуется частная переменная та кот myVar?
Это решает компилятор. Для нас достаточно знать что мы не можем к ней обратиться и что она никогда не создаст конфликтов с существующими полями.
1
0 / 0 / 0
Регистрация: 29.08.2022
Сообщений: 9
03.09.2022, 16:45  [ТС]
Спасибо.

C#
1
public int MyProperty { get; set; }
То , есть единственное предназначение автоматического свойства это разрешение конфликтов с существующими полями???
Но ведь когда ми именуем название свойства конфликтов ведь не возникает. Что нам мешает избегать конфликтов при простом обьявлении переменной как public.

Я так понимаю при обьявлении данного автоматического свойства ми сохраняем за собой возможность изменить доступ, оставить только один аксессор и setter прописать как private?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
03.09.2022, 17:52
Цитата Сообщение от aleksandr9000 Посмотреть сообщение
То , есть единственное предназначение автоматического свойства это разрешение конфликтов с существующими полями???
Нет. Автоматические свойства были введены чтобы писать меньше кода при сохранении функциональности.

Цитата Сообщение от aleksandr9000 Посмотреть сообщение
Но ведь когда ми именуем название свойства конфликтов ведь не возникает. Что нам мешает избегать конфликтов при простом объявлении переменной как public.
Вы видимо меня неправильно поняли. Когда мы объявляем автоматическое свойство компилятор создаст для него поле. Имя этого поля генерируется так что оно не будет конфликтовать с другими членами класса которые объявил программист.

Цитата Сообщение от aleksandr9000 Посмотреть сообщение
Я так понимаю при обьявлении данного автоматического свойства ми сохраняем за собой возможность изменить доступ, оставить только один аксессор и setter прописать как private?
Да. Есть и такая возможность.
1
0 / 0 / 0
Регистрация: 29.08.2022
Сообщений: 9
03.09.2022, 20:25  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Вы видимо меня неправильно поняли. Когда мы объявляем автоматическое свойство компилятор создаст для него поле. Имя этого поля генерируется так что оно не будет конфликтовать с другими членами класса которые объявил программист.
Я видимо тупой..
Чем это
public int MyProperty { get; set; }
отличается от к примеру этого
public int My
кроме возможности(если будет необходимость) менять то что в {}.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
03.09.2022, 21:05
aleksandr9000, вы не тупой просто мы о разных вещах говорим. По сути вас интересует разница между свойством и полем. Это уже не раз обсуждалось. Вот пар тем:
- Свойства или Set & Get ?
- Зачем нужны автоматические свойства? {get; set}
- Что лучше, свойства с приватной переменной или автоматические свойства?
Если будет недостаточно, то можете еще загуглить "разница между свойством и полем".
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16140 / 11264 / 2888
Регистрация: 21.04.2018
Сообщений: 33,109
Записей в блоге: 2
04.09.2022, 10:11
Цитата Сообщение от aleksandr9000 Посмотреть сообщение
Чем это
public int MyProperty { get; set; }
отличается от к примеру этого
public int My
Цитата из темы по ссылке что дал OwenGlendower:
Цитата Сообщение от kolorotur Посмотреть сообщение
Цитата Сообщение от Igorokmen Посмотреть сообщение
Я пишу прогу, и учел, что мне не нужна будет логика для полей. Только поставить значение и взять, это может мне дать публичное поле.
C# — объектно-ориентированный язык, с его помощью вы создаете системы, которые моделируют что-то в жизни, представляя это в виде объектов.
У любого объекта в жизни есть свойства, которые его описывают и есть действия, которые с ним можно производить (методы). У объектов нет полей, у них есть свойства.
Поле — это деталь реализации класса.

Это если смотреть на вещи с семантической точки зрения. Семантика свойства — описание объекта, семантика поля — механизм, через который эти свойства реализуются.

Цитата Сообщение от Igorokmen Посмотреть сообщение
Дело тут совсем не в инкапсуляции.
Именно в ней.

Цитата Сообщение от Igorokmen Посмотреть сообщение
Чем хуже публичное поле, если его заменили "безопасным" свойством.
Тем, что оно "выпячивает" детали реализации вашего класса, то есть нарушает инкапсуляцию.
С технической же точки зрения, используя поля вы сразу теряете огромный пласт функционала, доступного в .NET: привязку данных, некоторые виды сериализации, возможность использовать некоторые атрибуты и много другого, что работает только со свойствами.
aleksandr9000, по сути ваш вопрос это "Зачем нужно ООП, если всё можно реализовать процедурным программированием?"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2022, 10:11
Помогаю со студенческими работами здесь

Зачем нужны автоматические свойства? {get; set}
Я прочел все темы в этом форуме касательно свойств. Но никто толком не может ответить зачем нужны автоматические свойства, почему они...

Автоматические скриншоты
Добрый день уважаемые программисты! Пожалуйста, помогите с разработкой программы, нужно написать программу, при открытии которой...

Автоматические изменение даты на 14 дней вперед
Такое здание: создаю приложение для библиотеки, и нужно чтобы формировался автоматический срок возврата книги чрез 14 дней. добавила два...

Выполнить команду в set свойства для свойства SelectedItem (ComboBox ) MVVM
Хай Коротко: при каждом выборе элемента из ComboBox нужно выполнять команду, для которой в качестве параметра нужно передать экземпляр...

PropertyGrid. Как отловить видимость свойства в зависимости от другого свойства?
Работаю с propertyGrid. Одно поле высвечивается, когда в другом появляется определенное значение. Взяла за основу раздел «Как управлять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru