|
Alvin Seville
|
|
Инициализация полей структур11.10.2018, 16:00. Показов 5615. Ответов 45
Метки нет (Все метки)
Насколько знаю, у экземпляров классов поля всегда инициализируются значениями по умолчанию перед тем как в дело вступает конструктор. Почему у структур для инициализации полей используется конструктор по умолчанию для этих целей?
0
|
|
| 11.10.2018, 16:00 | |
|
Ответы с готовыми решениями:
45
Инициализация массива структур Инициализация структуры содержащей массив структур Не происходит инициализация полей |
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 11.10.2018, 20:33 | ||
|
Если разговор о C#, то конструктор-то есть. Как там его компилятор обработает в целях оптимизации — это его дело, в конце-концов все превратится в ассемблер, где вообще без конструкторов
1
|
||
|
|
|
| 11.10.2018, 20:42 | |
|
kolorotur,
Так у меня какой-то диссонанс от таких оптимизаций ![]() Я реально полагал что из шарпа вызвать конструктор явно нельзя. По той простой причине, что ему нечего инициализировать. Т.е. в языке есть явный запрет на создание таких конструкторов, но нет запрета на вызов. А если учесть то, что он нигде не нужен (да и по факту, в MSIL, нигде и не вызывается), то вопрос "Зачем?", заданный выше, у меня тоже возникает.
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||||||||||||||||||
| 11.10.2018, 21:04 | |||||||||||||||||||
![]() Именно для уменьшения сюрпризов: переменная проинициализирована без вызова конструктора с параметрами (правила это позволяют), хотя другого не определено. Как так?! Вы не сможете использовать переменную значимого типа без явной инциализации всех членов или без вызова конструктора — вот тут и нужен.
1. Явно проинициализировать все члены перед первым использованием:
2
|
|||||||||||||||||||
|
|
|
| 11.10.2018, 21:36 | |
|
kolorotur, спасибо, конечно, за примеры, но пока ничего логичнее не стало. Надо на досуге почитать/поэкспериментировать.
Все равно смахивает на какой-то очередной костыль. "чтобы избежать ошибки компиляции", как вы говорите
0
|
|
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|||||||||||||||||||||||||||||||
| 11.10.2018, 22:15 | |||||||||||||||||||||||||||||||
|
Итак, провел небольшой тест с подменой
![]() для начала если добавить в конструктор вывод в консоль и скомпилить с этой библиотекой. (тестовый код ниже приведен) Кликните здесь для просмотра всего текста
Далее я решил просто выставить значение i на 987 в конструкторе без параметров и потом выводить именно это значение. Тестовый код: Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
И вот какой результат вышел. Там где передача в метод, там конструктор и не вызывается, но значение 987 идет копией из локала, лень уже править 1. Честная либа без всяких переопределений (двойка в начале так и задумана) Кликните здесь для просмотра всего текста
2. Компиляция с подмененной dll Кликните здесь для просмотра всего текста
3. Компилячия с честрой либой, потом подмена ее на фейковую Кликните здесь для просмотра всего текста
4. Если компилить с 987 и потом подменить на честную, бросит эксепшн что конструктор не определен В архиве прилагаю собранные честную и 987 либы. Можно переименовать в Lib.dll и скомпилить с тестом
1
|
|||||||||||||||||||||||||||||||
|
Модератор
|
|
| 11.10.2018, 22:27 | |
|
0
|
|
| 11.10.2018, 22:27 | |
|
Инициализация статических полей
Обращение и инициализация полей класса
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
|
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи.
. . .
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|