C# boxing va unboxing converting.
C# dasturlash tili qatiy tiplangan dasturlash tillari
gurihiga kiradi. C++, Java DTlaridagi kabi C#da ham tiplar 2ta asosiy guruhga
bo’linadi:DTda aniqlangan tiplar va foydalanuvchi tomonidan yaratilgan tiplar.
Ob’ekt tipi kompilyatorga ob’ekt o’lchamini bildiradi.
Tiplar sistemasi 3 guruhga bo’linadi:
1)
Value Types – O’zgaruvchining joriy qiymatini
saqlaydi. Stekda joylashadi va ishlash tezligi yuqori bo’ladi (int, sbyte,
short, ushort, uint, long, char, float, double, decimal, bool, enum, struct)
2)
Reference Types – o’zgaruvchi qiymatining
adressini saqlaydi. Kucha(heap)da joylashadi (string, object, class, interface,
delegate, barcha massivlar (hatto ularning qiymatlari Value Type bo’lsa ham))
3)
Pointer Types (Masalan int* p, float* k, enum*
q,…)
*Izoh: Stek - har bir
yangi qo’shilgan elemet avvalgilardan yuqorida joylashish ya’ni “Birinchi
kelgan oxirida ketadi” prinsipida ishlovchi konteyner(See also: http://professorweb.ru/my/csharp/charp_theory/level12/12_6.php).
C# da Value tipni Referance tipga, yoki aksincha Referance
tipni Value tipga konvertlash (o’girish) mumkin. Value tipni Reference tipga
konvertlash operatsiyasi Boxing konvertlash, teskari operatsiya esa Unboxing
konvertlash deyiladi.
Masalan
Boxing:
1: int Val1=1;
2: Object Val2=Val1;//Boxing
UnBoxing:
1: int Val1=123;
2: Object Val2=Val1;//Boxing
3: int Val3=(int)Obj;//Unboxing
Izoh: birinchi ikki qatorda Value tipni Reference tipga o’girish
ko’rsatilgan, keyingi qatorda esa Objectdan qanday qilib Value tipga o’girish
mumkinligi ko’rsatilgan. Bu jarayon Reference tipdan Value tipga o’g’rirish(Unboxing
Converting) deb nomlanadi.
See also
http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx