This example shows boxing and unboxing in C#. First, an int variable x is declared with value 123. Then x is boxed into an object o, which means a new object is created on the heap holding the value 123. Next, the object o is unboxed back to an int y by casting. Finally, y is printed, showing 123. The original variable x remains unchanged throughout. Boxing wraps the value type into a reference type object, and unboxing extracts the value back. Unboxing must match the original type or it causes an error. This trace helps visualize how values move between value and reference types in C#.