Разработка компиляторов

       

Как работает распаковка


Теперь разберемся с обратной операцией, распаковкой:

  1. Проверяется, что исходная ссылочная переменная не равняется null и что она ссылается на значение, полученное упаковкой ожидаемого типа-значения. Если какое-либо из этих условий неверно, то выдается InvalidCallException.
  2. Если же типы совпадают, то возвращается указатель на содержимое ссылочного типа (без учета накладных расходов, связанных с организацией объекта).

Важно понимать, что упаковка всегда копирует значение при создании объекта, а распаковка ничего не копирует, а просто возвращает прямую ссылку на само значение (хотя чаще всего результат распаковки все равно куда-нибудь копируется).

На следующем слайде мы рассмотрим пример, иллюстрирующий процесс упаковки и распаковки.



Содержание раздела