Boxing can happen automatically in C#, when you pass a value-typed variable to a method that accepts aSystem.Object (object).
The Console.WriteLine method is a good example of this. It accepts a format string as its first parameter and then a series of object parameters, which represent objects to substitute into the format string. (Specifically,Console.WriteLine calls each object’s ToString method to get its string representation).
We can pass in some reference-typed objects to Console.WriteLine.
1
2
3
| Person p = new Person("Lillian", "Gish");Console.WriteLine("The actor known as {0} was a silent film star.", p); |
We can also pass value-typed variables into Console.WriteLine. The value types will be boxed–converted into reference types. An object will be created on the heap for each value-typed parameter and its value copied to the new object.
1
2
3
| int i = 1964;Console.WriteLine("Favorite numbers: {0}, {1}, {2}", 42, 6, i); |

