יום חמישי, 2 בינואר 2014

Boxing and UnBoxing

שלום רב,

לפניכם עוד פוסט מסדרת הפוסטים הקצרים אשר מיועדים להעביר מסר אחד בצורה מהירה.
חשבתי לכתוב כמה מילים על Boxing & UnBoxing, אז הנה..

אז בעצם מדובר על פעולה שהיא מקרה פרטי של Casting.
כשאנחנו מדברים על Boxing אנחנו מתכוונים ל value type to a reference type conversion.
לדוגמא המרה של integer ל object.
בתהליך ה Boxing, ה value type מוקצה על ה Heap (זהו בעצם העתק הערך של ה value type המקורי), ואליו מצביע object הנמצא ב Stack.

Unboxing, לעומת זאת, זה בדיוק אותו דבר רק הפוך, הכוונה להמרה של אותו boxed reference type חזרה אל value type.
בפעולה זאת, ה boxed reference type, עובר תהליך של unboxing מה Heap, ומתבצעת השמה ל value type אשר מוקצה ב Stack.

אם עדיין לא ברור, התרשים הבא הולך לפזר את הערפל שנותר:


     
                                                                                                                                        



























תודה,
יניב