سلام.
بصورت ساده اگر بخوام بگم:
ارسال اطلاعات از value type به reference type رو boxing میگن و بر عکس این عمل رو یعنی ارسال اطلاعات از reference type به value type رو unboxing میگن.
این مثال رو توجه کنید :
boxing :
int foo = 42; // Value type
object bar = foo; // foo is boxed to bar
unboxing :
int foo = 42; // Value type
object bar = foo; // foo is boxed to bar
int foo2 = (int)bar; // Unboxed back to value type