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

       

Упаковка и распаковка


Зачастую возникает необходимость в интерпретации типа-значения как ссылочного типа. Например, в следующем примере мы добавляем тип-значение в коллекцию:

ArrayList a = new ArrayList(); for (int i=0; i < 10; i++) { Point p; // Allocate a Point (not in the heap) p.x = p.y = i; // Initialize members in the value type a.Add(p); // here we're boxing the value type... }

Для добавления в массив нам необходимо преобразовать значение в ссылочный тип, т.к. метод Add принимает на вход только параметры типа Object. Процесс преобразования типа-значения в ссылочный тип называется упаковкой (boxing). Естественно, существует и обратный процесс, который называется распаковкой (unboxing). Отметим, что ссылочный тип существует только в упакованной форме, а тип-значение может находиться как в упакованной, так и в распакованной форме.



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