Подробный разбор кода

x имеет тип int; object y = x выполняет boxing. Строка int z = y не компилируется, поскольку обратное unboxing-преобразование требует явного приведения.

Короткий ответ

Что ответить на собеседовании

x имеет тип int; object y = x выполняет boxing. Строка int z = y не компилируется, поскольку обратное unboxing-преобразование требует явного приведения.

Подробный разбор

Ответ с пояснениями

Условие

Дайте детальное пояснение следующему фрагменту кода:

var x = 42;
object y = x;
int z = y;

Ответ

x имеет тип int; object y = x выполняет boxing. Строка int z = y не компилируется, поскольку обратное unboxing-преобразование требует явного приведения.

Исправление:

var x = 42;
object y = x;
int z = (int)y;

При упаковке в объект помещается копия значения 42. При распаковке тип должен соответствовать упакованному: (long)y не превратит упакованный int в long, а выбросит InvalidCastException. Для такого преобразования сначала распаковывают int: (long)(int)y. Упаковка не создаёт связь, которая меняла бы x при последующем изменении z.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее