Kategorie szkoleń | Egzaminy | Kontakt

Odpowiedź (1)

  • 7

Wszystko w .NET jest obiektem, ponieważ wszystko dziedziczy po System.Object.

Obiekty przechowywane są na stercie i zmienne typu object lub System.Object mogą referować do jakiegokolwiek obiektu na stercie, np:

 

Osoba o = new Osoba();
object obj = o;

int x = 10;
object obj2 = x;

 

Pierwszy przypadek obj kopiuje referencję do obiektu klasy Osoba.

Drugi przypadek obj2 kopiuje wartość typu prostego(int) x ze stosu na stertę oraz referencyjnie wiąże ze zmienną obj2. Ten proces nazywa się pakowaniem(boxing).

Aby teraz "wypakować", czyli przypisać wartość zmiennej typu object obj2 do zmiennej typu int x, należy użyć rzutowania:

 

x = (int)obj2

//Kompilator sprawdzi czy rzutowany obiekt posiada wartość typu int 
//i przypisze ją do zmiennej x.

//Ta operacja nazywa się wypakowanie(unboxing). 
 
//W przypadku nieprawidłowej wartości obiektu zostanie wywołany wyjątek
//InvalidCastException.
 
  • Odpowiedział
  • @ | 11.06.2014
  • TRENER ALTKOM AKADEMII