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

Распаковка unboxing

После boxing значение лежит в object. Чтобы снова получить int или структуру, пишут cast: (int)box. Неверный тип даёт InvalidCastException - распаковать в long то, что упаковано как int, нельзя. Нужен точный тип упаковки.

Синтаксис

object box = 5; int num = (int)box;

Пример

Давайте распаковать int из object:

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

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

5

Пример

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

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

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

5

Пример

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

using System; class Program { static void Main() { object box = 5; int res = (int)box; res = 10; Console.WriteLine((int)box); } }

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

5

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

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