Какой смысл в boxing/unboxing?

Сам процесс вроде как понятен - мы перебрасываем, грубо говоря, данные из стека в кучу и наоборот, что занимает кучу времени и вообще штука вроде как совершенно ненужная, ибо с кучей работать в принципе дольше. Отсюда и вопрос - какой, так сказать, практический толк в данной "фиче"?
  • Вопрос задан
  • 2697 просмотров
Решения вопроса 2
@kttotto
пофиг на чем писать
Иногда есть необходимость работать с чем то обобщенным, абстрагироваться от конкретного типа. Например при сериализации в json для отправки данных клиенту, как то так
public string ResponseData(object value)
{
	retrun JsonConvert.Serialaze(value);
}

Теперь мы может одним методом отправить хоть объект, хоть значимый тип. Если бы не было упаковки, пришлось бы писать кучу перегрузок для метода.
Ответ написан
Kubatai
@Kubatai
Техник-программист
Смотрите это как на инструмент, вытекающий из механизма ООП(а точнее наследования) в языке C#.

Вот цитата из довольно развёрнутого ответа на такой же вопрос:
Источник цитаты
Чтобы иметь унифицированную систему типов и разрешать типы значений иметь совершенно иное представление своих базовых данных от того, как ссылочные типы представляют их базовые данные (например, int - это просто ведро из тридцати двух бит, которое полностью отличается от ссылочного типа).

Подумайте об этом так. У вас есть переменная o типа object. И теперь у вас есть int, и вы хотите поместить его в o. o является ссылкой на что-то где-то, а int категорически не является ссылкой на что-то где-то (в конце концов, это просто число). Итак, что вы делаете, так это: вы создаете новый object, который может хранить int, а затем вы назначаете ссылку на этот объект на o. Мы называем этот процесс "боксом".

Итак, если вам не нужно иметь унифицированную систему типов (т.е. ссылочные типы и типы значений имеют очень разные представления, и вам не нужен общий способ "представить" эти два), то вы не нужен бокс. Если вам не нужно, чтобы int представляло их базовое значение (т.е. Вместо этого int тоже были ссылочными типами и просто сохраняли ссылку на их базовое значение), вам не нужен бокс.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы