Opakowywanie

pRoGi

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

Opakowywanie 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 komentarzy

zadam to samo pytanie, po co się tego używa?

po co się tego używa?

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

zwięźle i na temat ;)