Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/35: Рейтинг темы: голосов - 35, средняя оценка - 4.97
4 / 4 / 2
Регистрация: 10.08.2015
Сообщений: 59

Boxing/Unboxing

10.12.2015, 23:44. Показов 7293. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можете объяснить boxing/unboxing? Читаю, но не понимаю как именно должно работать и зачем оно вообще?
После него у меня идет Enum и на сколько я понимаю его тоже на примере boxing/unboxing рассматривают и точно такие же непонятки.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.12.2015, 23:44
Ответы с готовыми решениями:

Упаковка / распаковка (boxing/unboxing)
Привет всем.Я хочу задать вопрос про упаковки/распаковки(boxing/unboxing). если у меня есть struct Point , и я создаю объект в стеке...

Зачем производить boxing?
Зачем нужно значение ValueType размещать на куче? int a =2 ; object obj =a; Ну и зачем так делать?)целесообразность какая?

Ошибка boxing-преобразования
Хочу проверить код через int SortedLinkedList<int> list1 = new SortedLinkedList<int>(); Ошибка Не удается использовать тип...

3
44 / 44 / 28
Регистрация: 06.07.2011
Сообщений: 353
10.12.2015, 23:54
По возможности, нужно избегать этого. Так как, уж очень ресурсоемкий процесс.
А вообще, Джеффри Рихтер довольно подробно описал этот процесс. (CLR via C#)
C#
1
2
3
int x = 5; 
object foo = x;
int y = (int)foo;
1
4 / 4 / 2
Регистрация: 10.08.2015
Сообщений: 59
11.12.2015, 00:07  [ТС]
Цитата Сообщение от objaa Посмотреть сообщение
По возможности, нужно избегать этого. Так как, уж очень ресурсоемкий процесс.
Да, об этом читал, но так как только начал изучать, не зная всех тонкостей не знаю стоит ли хорошо изучить или быстренько пройти и переключится на что то другое...

А на счет Enum, тут упаковка/распаковка нужна или просто у меня в примере код похож только?
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
11.12.2015, 00:21
Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

Цитата Сообщение от Dipe Посмотреть сообщение
Можете объяснить boxing/unboxing? Читаю, но не понимаю как именно должно работать и зачем оно вообще?
Переменная в программировании — это место хранения информации.
В C# есть два вида переменных: ссылочные (reference) и значимые (value).
Переменные значимых типов хранят непосредственно значение, а переменные ссылочных типов хранят ссылку на значение, которое лежит где-то в другом месте.
В качестве аналогии можно привести файл и ярлык на файл: в первом хранятся непосредственно данные (значимый тип), а в ярлыке хранится всего лишь указание места, где хранятся данные — это ссылочный тип.

По ходу написания кода может возникнуть ситуация, когда с переменной значимого типа приходится работать как с переменной ссылочного типа: например, если эту переменную нужно передать в метод, который принимает на вход ссылку, а не значение.
Просто передать переменную не получится, потому что принимающая сторона будет воспринимать ее значение как ссылку: например, если в переменной значимого типа хранится значение "12345", то метод, считающий что ему дали ссылку подумает, что "12345" — это место, в котором нужно искать собственно значение. Ничего хорошего из этого, сами понимаете, не выйдет.
В таких ситуациях и производится запаковка: создается дополнительный объект-обертка, в него помещается значение из переменной, потом создается дополнительная переменная ссылочного типа, которая хранит ссылку на эту обертку, и уже такая переменная передается в метод.
Сами видите — много лишних телодвижений, да плюс сборщик мусора, который следит за памятью, должен этот дополнительный объект потом удалить, когда он уже станет не нужен.

Ну а распаковка — это обратный процесс, когда из переменной ссылочного типа вы извлекаете местоположение непосредственно данных, создаете новую переменную значимого типа и копируете в нее эти данные.

Цитата Сообщение от Dipe Посмотреть сообщение
А на счет Enum, тут упаковка/распаковка нужна или просто у меня в примере код похож только?
Упаковка/распаковка происходит в конкретных ситуациях, а не "в принципе".
Покажите код, где вы используете этот Enum — тогда будет видно
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.12.2015, 00:21
Помогаю со студенческими работами здесь

Использование Struct в сценариях для классов. Можно ли избежать boxing?
Здравствуйте. Есть сценарий, для которого идеально подходят классы, а именно: -базовый класс с 5-7 наследниками. Эти классы содержат...

Нужен ли boxing-unboxing в .Net 4.5
А вообще оно надо? ведь уже давно есть Generic... Кто нибудь может привести задачу когда оно действительно надо? и не абстрактную,...

Unboxing of may produce NullPointerException
Здравствуйте, сегодня столкнулся с незнанием, как поступить в данной ситуации. Сегодня не трогал ту часть кода, которая отвечает за данные,...

Unnecessary boxing
Здравствуйте, при Integer num = Integer.valueOf(S.charAt(S.length())); Выскакивает:

Что происходит под капотом при autoboxing и unboxing?
Всем привет, подскажите что происходит под капотом при autoboxing и unboxing? Подозреваю что выполняются метод ValueOf() при упаковке в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru