C# | Boxeo y Unboxing

Requisito previo: Tipos de datos en C#

Boxing y unboxing son conceptos importantes en C# . El sistema de tipos de C# contiene tres tipos de datos : tipos de valor (int, char, etc.) , tipos de referencia (objeto) y tipos de puntero . Básicamente, Boxing convierte una variable de tipo de valor en una variable de tipo de referencia, y Unboxing logra lo contrario. Boxing y Unboxing permiten una vista unificada del sistema de tipos en el que un valor de cualquier tipo se puede tratar como un objeto.

Boxeo en C#

  • El proceso de convertir una variable de tipo de valor (char, int, etc.) en una variable de tipo de referencia (objeto) se denomina boxeo .
  • El boxeo es un proceso de conversión implícito en el que se utiliza el tipo de objeto (supertipo).
  • Las variables de tipo de valor siempre se almacenan en la memoria de la pila, mientras que las variables de tipo de referencia se almacenan en la memoria del montón.
  • Ejemplo :
int num = 23; // 23 will assigned to num
Object Obj = num; // Boxing
  • Descripción: Primero, declaramos una variable de tipo de valor num del tipo int y la inicializamos con el valor 23. Ahora, creamos una variable de tipo de referencia obj del tipo Object y le asignamos num . Esta asignación da como resultado implícitamente que la variable de tipo de valor num se copie y almacene en la variable de tipo de referencia obj , como se muestra en la siguiente figura:
Boxing

Boxeo

  • Entendamos el boxeo con un código de programación C#: 

Csharp

// C# implementation to demonstrate
// the Boxing
using System;
class GFG {
 
    // Main Method
    static public void Main()
    {
 
        // assigned int value
        // 2020 to num
        int num = 2020;
 
        // boxing
        object obj = num;
 
        // value of num to be change
        num = 100;
 
        System.Console.WriteLine
        ("Value - type value of num is : {0}", num);
        System.Console.WriteLine
        ("Object - type value of obj is : {0}", obj);
    }
}
Producción:

Value - type value of num is : 100
Object - type value of obj is : 2020

Desembalaje en C#

  • El proceso de convertir una variable de Tipo de referencia en una variable de Tipo de valor se conoce como Unboxing .
  • Es un proceso de conversión explícito.
  • Ejemplo :
int num = 23;         // value type is int and assigned value 23
Object Obj = num;    // Boxing
int i = (int)Obj;    // Unboxing
  • Descripción: Declaramos una variable de tipo de valor num , que es del tipo int y le asignamos el valor entero 23. Ahora, creamos una variable de tipo de referencia obj del tipo Object , en la que encuadramos la variable num. Ahora, creamos un valor de tipo entero i para desempaquetar el valor de obj. Esto se hace usando el método de conversión, en el que especificamos explícitamente que obj debe convertirse como un intvalor. Por lo tanto, la variable Tipo de referencia que reside en la memoria del montón se copia a la pila como se muestra en la siguiente figura:
Unboxing

Desembalaje

  • Entendamos el Unboxing con un código de programación C#: 

Csharp

// C# implementation to demonstrate
// the Unboxing
using System;
class GFG {
 
    // Main Method
    static public void Main()
    {
 
        // assigned int value
        // 23 to num
        int num = 23;
 
        // boxing
        object obj = num;
 
        // unboxing
        int i = (int)obj;
 
        // Display result
        Console.WriteLine("Value of ob object is : " + obj);
        Console.WriteLine("Value of i is : " + i);
    }
}
Producción:

Value of ob object is : 23
Value of i is : 23
  • En casos como el desempaquetado de un objeto nulo o la conversión del objeto como un tipo de datos incompatible, el programa genera excepciones.

Publicación traducida automáticamente

Artículo escrito por jit_t y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *