Бокс - это процесс преобразования типа значения в управляемый объект кучи, который является неявным. Unboxing - это обратный процесс, для которого компилятор требует явного приведения. Поскольку бокс хранит тип данных, почему нельзя использовать unboxing, вместо того, чтобы запрашивать явный листинг?
class BoxUnBox
{
static void Main()
{
int i = 123; // a value type
object o = i; // boxing
int j = (int)o; // unboxing - Why is an explicit cast required?
}
}