Programowanie w języku C#

Opakowywanie

Język C# daje nam możliwość zamiany zmiennej typu prostego na obiekt i vice versa. Obie konwersje są realizowane za pomocą opakowywania (ang. boxing) i odpakowywania (ang. unboxing).

Opakowaywanie jest prostym procesem przypisania wartości do zmiennej typu object:

int i = 3;
object o = i; 


Zmienna i jest tworzona na stosie i jest reprezentowana przez wartość, natomiast obiekt o na stosie ma tylko adres (wskaźnik) na spakowaną wartość i jej typ znajdujące się na stercie.

Operacja odwrotna czyli odpakowywanie jest realizowane poprzez Rzutowanie:

int j = (int)o;


Niemożliwe jest odpakowywanie w następujący sposób:

int j = (short)o;
int k = (long)o;


Obydwa przypadki wygenerują błąd, ponieważ przy odpakowywaniu musi być zachowana zgodność typów.

Operacje pakowania mają wpływ na wydajność, ponieważ zajmują trochę czasu, a wykonanie operacji na wartościach zapakowanych wymaga więcej cykli procesora niż na wartościach niezapakowanych.

Zobacz też:

4 komentarze

Brak avatara
kliszaq 2014-02-23 20:25

"zamiany zmiennej typu prostego" raczej powiedziałbym tutaj zamiany zmiennej typu wartościowego (Value Type).

piternet 2010-09-19 19:12

po co się tego używa?

kliszaq 2009-09-17 21:42

"zamiany zmiennej typu prostego" raczej powiedziałbym tutaj zamiany zmiennej typu wartościowego (Value Type).

TeWuX 2006-03-19 13:07

zwięźle i na temat ;)