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ż:
Informacje
Ostatnia modyfikacja 13-01-2008 11:49 Ostatni autor Coldpeer
Ilość wyświetleń 3912 Wersja 5
Komentarz
kliszaq dnia 17-09-2009 21:42
"zamiany zmiennej typu prostego" raczej powiedziałbym tutaj zamiany zmiennej typu wartościowego (Value Type).
TeWuX dnia 19-03-2006 13:07
zwięźle i na temat ;)

Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0417 sek. (zapytań SQL: 13)