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ż:
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 ;)