Diferència entre la boxa i la desconnexió a C #

Autora: Laura McKinney
Data De La Creació: 2 Abril 2021
Data D’Actualització: 5 Ser Possible 2024
Anonim
Diferència entre la boxa i la desconnexió a C # - Tecnologia
Diferència entre la boxa i la desconnexió a C # - Tecnologia

Content


A C #, tots els tipus de valor es deriven de l'objecte classe. Per tant, una variable de referència d'un objecte tipus pot fer referència a qualsevol altre tipus de valor. C # introdueix dos mètodes a Boxa i Unboxing, que enllaça el tipus de valor al tipus de referència. La diferència bàsica entre Boxing i Unboxing és que Boxing és la conversió del tipus de valor a un tipus d'objecte, mentre que, per altra banda, el terme Unboxing fa referència a la conversió del tipus d'objecte al tipus de valor. Estudiem les altres diferències entre la boxa i la bústia de caixa.

  1. Gràfic de comparació
  2. Definició
  3. Diferències claus
  4. Conclusió

Gràfic de comparació

Bases per a la comparacióBoxaUnboxing
BàsicEl tipus d'objecte fa referència al tipus de valor.procés per recuperar valor de l’objecte en caixa.
EmmagatzematgeEl valor emmagatzemat a la pila es copia a l'objecte emmagatzemat a la memòria acumulada.El valor dels objectes emmagatzemats a la memòria heap es copia en el tipus de valor emmagatzemat a la pila.
ConversióConversió implícita.Conversió explícita.
Exempleint n = 24;
objecte ob = n;
int m = (int) ob;


Definició de boxa

La boxa és un procediment per convertir un tipus de valor a un tipus d'objecte. Aquí, el tipus de valor s'emmagatzema a la pila i el tipus d'objecte s'emmagatzema a la memòria de pila. Aquesta conversió del tipus de valor al tipus d'objecte és una conversió implícita. Podeu assignar directament un valor a un objecte, i C # gestionarà la conversió de resta. Entenem la boxa amb un exemple.

int i = 24; objecte ob = i; // Caixa del tipus enter n al tipus d'objecte ob. o objecte ob1 = 21; // aquí també un tipus d'objecte ob1 fa referència a un tipus enter

Al codi anterior, el tipus enter que conté el valor 24 es guarda a la pila i es copia al tipus d'objecte ob. Un tipus d'objecte fa referència a un valor enter. Ara, "int i" també conté el valor 24 i el "tipus d'objecte ob" també contenen el valor 24, però tots dos són independents els uns dels altres, és a dir, si canvieu el valor de i, no reflectirà el canvi en el valor d'ob.


La boxa consumeix més memòria i temps addicional. El motiu és que un nou objecte, que farà referència al tipus de valor, ha d’assignar l’espai de memòria al grup. A continuació, el valor del tipus de valor que s’emmagatzema a la pila es transferirà a ob tipus d’objecte, a la ubicació de memòria heap.

Definició de Unboxing

La inversa de Boxa és Unboxing. El desallotjament és una conversió del tipus d'objecte al tipus de valor. A Unboxing, el valor del tipus d'objectes en caixa emmagatzemat al grup és transferit al tipus de valor que s'emmagatzema a la pila. A diferència de la boxa, el desplegament s'ha de fer explícitament. El tipus d'objecte s'expressa explícitament al tipus de valor i el tipus de valor ha de ser el mateix que el tipus al qual es fa referència. Entenem el exemple del desallotjament amb un exemple.

int i = 24; objecte ob = i; // Caixa del tipus enter n al tipus d'objecte ob. int j = (int) ob; // Desmarqueu el valor enter que s’emmagatzema en el tipus d’objecte ob al tipus enter y.

El valor emmagatzemat a l'objecte ob es recupera enviant-lo al tipus que l'objecte feia referència a és a dir, tipus enter "j".

El desembalatge també consumeix més memòria i més temps. Ja que, quan un tipus d'objecte s'ha de desembossar, el valor del tipus d'objecte emmagatzemat al munt ha de ser transferit al nou tipus de valor emmagatzemat a la pila. El tipus d'objecte el valor recuperat estarà disponible per a la recollida d'escombraries.

  1. A la boxa, un objecte es fa referència com a tipus de valor. D'altra banda, el procés de recuperació del valor de l'objecte en caixa es denomina caixa de caixa.
  2. Un tipus de valor emmagatzemat en una pila es copia a l'objecte emmagatzemat a la memòria acumulada. D'altra banda, a la unboxing, un objecte emmagatzemat a la memòria acumulada es copia en un tipus de valor emmagatzemat a la memòria de pila.
  3. La boxa és una conversió implícita, mentre que, el bobox és una conversió explícita.

Conclusió:

Tant la boxa com la bústia de consum consumeixen més temps i memòria, i són costosos computacionalment. També manquen de seguretat de tipus i augmenten el temps d'execució de la despesa general. Sempre s’aconsella evitar l’ús excessiu de la boxa i la bústia de caixa al programa.