post icon

Conversión Boxing y UnBoxing

Suena un poco raro estos términos, pero son procesos sencillos y cotidianos para los que hemos en algún momento programado con VB y C# .net. La definición que da el MSDN es la siguiente:

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 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.

Es una definición bastante sencilla de entender, pero si a alguno igual no le ha quedado claro, veamos 2 ejemplos en los lenguajes anteriormente mencionados:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub Main()
 
  Dim x As Integer
  Dim y As Object
 
  x = 10
 
  ' boxing
  y = x
 
  'unboxing
  x = y
 
End Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
internal void Main() {
 
  int x = 123;
  object y;
 
  // implicit boxing
  y = x;  
 
  // explicit boxing
  y = (object)x;  
 
  // unboxing
  x = (int)y; 
 
}

Las conversiones Boxing y Unboxing son bastantes lentas de hacerlas, hay que tener mucho cuidado con su uso exagerado, ya que podría afectar severamente el rendimiento de nuestra aplicación, específicamente en el caso del Boxing puede llegar a tardar 20 veces más la conversión, que la asignación, y en el caso del unboxing, unas 4 veces más.

14 diciembre 2009

Comentarios desde Facebook:

Sin Comentarios aun, puedes tú ser el primero en comentar!

Deja tu Comentario

Responder