Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1136 of 1492 menu
◀ ▶

Упаковка boxing

Когда значимый тип - int, struct или другой тип-значение - присваивают object или интерфейсу, выполняется упаковка: в куче создаётся копия, а ссылка хранится в object. Запись object box = 5; упаковывает int. Обратная операция - unboxing.

Синтаксис

object box = 5; object box = valueStruct;

Пример

Давайте упаковать int в object:

using System; class Program { static void Main() { object box = 5; Console.WriteLine(box.GetType().Name); } }

Результат выполнения кода:

"Int32"

Пример

Давайте упаковать структуру:

using System; struct Cell { public int Id; } class Program { static void Main() { Cell cell = new Cell { Id = 5 }; object box = cell; Console.WriteLine(box is Cell); } }

Результат выполнения кода:

True

Пример

Давайте передать упакованное значение в метод с object:

using System; class Program { static void Print(object value) { Console.WriteLine(value); } static void Main() { Print(5); } }

Результат выполнения кода:

5

Смотрите также

  • распаковка unboxing,
    которая достаёт тип из object
  • приведение implicit,
    которое не создаёт box
  • тип int,
    который часто упаковывают
  • тип double,
    который тоже может упаковываться
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить