C# Boxing & Unboxing

  • Boxing
Değer tipinden bir degiskenin, object türüne bilinçsiz dönüstürülmesidir.

Örnek :
int i = 12;
object o = (object);

  • Unboxing
Boxing işleminin tam tersidir. Obje türünden bir degiskenin, değer tipine bilinçli dönüstürülme işlemidir.

Örnek :
object o = 12;
int i = (int)o;

Buradaki bilinçli - bilinçsiz dönüştürme işlemini şu anlama gelmektedir:

Mesela Boxing yaparken bilinçsiz bir dönüşüm söz konusudur çünkü istediğimiz değeri hata almadan obje türüne çevirebiliriz. Fakat Unboxing'te bilinçli bir dönüşüm söz konusudur çünkü Unboxing yaparken mesela örneğimize bakarsak 12 objesini int'e çevirmişiz yani böyle bir dönüşüm yapabiliriz fakat o objesi 12 değilde "abc" gibi bir string olsaydı bunu int e çevirmeye kalksaydık : "System.InvalidCastException: Specified cast is not valid." hatası alırdık. Yani Boxing yaparken her türlü nesneyi objeye çevirebileceğimiz için hata almayız ama Unboxing yaparken neye çevireceğimizi düşünmemiz gerekir bu yüzden bilinçli dönüştürme söz konusudur.

0 yorum :

Yorum Gönder