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