В этой статье мы коротко пройдемся по малоизвестным особенностям boxing/unboxing.
Предыдущая статья о foreach
Предыдущая статья об Array
Типичный вопрос на собеседовании об упаковке и распаковке выглядит следующим образом — «Что будет при запуске данного кода, и если он не будет работать то как его исправить?».
Тестовый код:
Ответ может быть следующий — «При распаковке первый оператор является не приведением типов а распаковкой типа, соответственно он должен соответствовать типу значения находящегося в запакованном виде.».
Правильный ответ:
Обычно это считается правильным ответом, но это не совсем так…
Предыдущая статья о foreach
Предыдущая статья об Array
Типичный вопрос на собеседовании об упаковке и распаковке выглядит следующим образом — «Что будет при запуске данного кода, и если он не будет работать то как его исправить?».
Тестовый код:
object box = (int)42;
long unbox = (long)box;
Ответ может быть следующий — «При распаковке первый оператор является не приведением типов а распаковкой типа, соответственно он должен соответствовать типу значения находящегося в запакованном виде.».
Правильный ответ:
object box = (int)42;
long unbox = (long)(int)box;
Обычно это считается правильным ответом, но это не совсем так…