La conversión boxing se utiliza para almacenar tipos de valor en el montón de recolección de elementos no utilizados. Boxing es una conversión implícita de Tipos de valores (Referencia de C#) al tipo object o a cualquier tipo de interfaz implementado por este tipo de valor. Al aplicar la conversión boxing a un tipo de valor se asigna una instancia de objeto en el montón y copia el valor en el nuevo objeto.
Considere la siguiente declaración de una variable de tipo de valor:
La siguiente instrucción aplica implícitamente la operación de boxing sobre la variable i:
object o = i; // implicit boxing
El resultado de esta instrucción es crear una referencia de objeto o en la pila que hace referencia a un valor del tipo int en el montón. Este valor es una copia del valor del tipo de valor asignado a la variable i. La diferencia entre las dos variables, i y o, se muestra en la siguiente ilustración.
También es posible realizar la conversión boxing de manera explícita, tal como se muestra en el ejemplo siguiente, pero ésta nunca es necesaria:
int i = 123;
object o = (object)i; // explicit boxing
Ejemplo
Este ejemplo convierte una variable de entero i a un objeto o mediante conversión boxing. A continuación, el valor almacenado en la variable i se cambia de 123 a 456. El ejemplo muestra que el tipo de valor original y el objeto empaquetado usan ubicaciones de memoria independientes y, por consiguiente, pueden almacenar valores diferentes.
class TestBoxing
{
static void Main()
{
int i = 123;
object o = i; // implicit boxing
i = 456; // change the contents of i
System.Console.WriteLine("The value-type value = {0}", i);
System.Console.WriteLine("The object-type value = {0}", o);
}
}
Resultados
The value-type value = 456
The object-type value = 123
Especificación del lenguaje C#
Vea también