Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
   
Konu: C# - Boxing İşlemi {13}
Hera
*
avatar
Yüzbaşı
Durum: Çevrimiçi
Seviye Puanı: 8
Yaşam Puanı: 193 / 193
Deneyim: 73 / 100
Rep Sayısı: 27
Mesaj Sayısı: 95
Üyelik Tarihi: 13.04.2019
     
Yorum: #1
C# - Boxing İşlemi {13}
09.05.2019 19:51
Şu anda popüler olan bir çok dilde referans tipleri ve değer tipleri arasında herhangi bir dönüşüm yapılamamaktadır. Bir çok durumda değer tiplerinin referans tiplerine dönüşümü gereksiz gibi görünsede de isteğe bağlı olarak kullanılması dilin güçlülüğünü ortaya koymaktadır. "Box" kelime anlamı olarak kutu anlamına gelmektedir. "Boxing" ise kutulama demektedir. C#'taki anlamı ise bir nesnenin object türüne bilinçli ya da bilinçsiz olarak dönüştürülmesidir.

Daha önce de dediğim gibi değer tipleri dahil bütün veri türleri object türünden bir dedğişkene atanabilir. object nesneler referans tipi olduğu için heap dediğimiz bellek bölgesinde tutulurlar. Halbuki değer tipi nesneler stack dediğimiz bellek bölgesinde tutulurlar. O halde bir değer tipini referans tipinden bir nesneye atadığımızda stack bölgesinde tutulan veri, bit olarak heap alanına kopyalanır. Ardından stack bölgesindeki object türünden olan değişken de bu heap bölgesini gösterecek şekilde ayarlanır. Bütün bu işlemlere boxing işlemi denilmektedir.

Bu işlem programlama olu ile aşağıdaki şekilde yapılır;

int i = 50;
object a = i;

Boxing işlemi bilinçsiz olarak yapılabileceği gibi tür dönüştürme operatörü kullanarak açıkça belirterek de yapılabilir. Yukarıdaki örnek ile aşağıdaki işlevsel olarak aynıdır;

int i = 50;
object a = (object)i;


Boxing işlemi daha iyi kavrayabilmek için boxing işleminden sonra 'a' ve 'i' nesnelerinin durumunu şekil üzerinde göstermek istiyorum;

Memory bölümler ile bilginiz yoksa bu konuyu anlayamazsınız bununla ilgili konum mevcut okuyarak anlayabilirsiniz.
C# - Temel Veri Türleri / RAM - Değişkenler {0}
Alinti
Rep Verenler: #Ayar
#H4CK4L
*
avatar
#R00T
Durum: Çevrimdışı
Seviye Puanı: 43
Yaşam Puanı: 1,056 / 1,056
Deneyim: 26 / 100
Rep Sayısı: 1071
Mesaj Sayısı: 3044
Üyelik Tarihi: 04.05.2013
      
Yorum: #2
RE: C# - Boxing İşlemi {13}
10.05.2019 15:15
Emeğine Sağlık Smile

Çocukken her akşam yatmadan önce Tanrı'ya bana bir bisiklet vermesi için dua ederdim. Bir gün Tanrı'nın çalışma tarzının bu olmadığını anladım. Ertesi gün gittim kendime yeni bir bisiklet çaldım ve her akşam yatmadan önce Tanrı'ya günahlarımı affetmesi için dua ettim.
Alinti



1 Ziyaretçi