Упаковка 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