The only difference between the two is in the second example you are actually
doing the boxing of the value type into a reference type onto the stack. As
every type in C# is derived from the type 'object', they all have the .ToString
method. The .ToString method does this boxing (or copying) for you. If you were
to look into the IL code you would see that a copy of the initial value type is
created as a reference type when the toString method is used with a line that
looks something like this
IL_0004: box [mscorlib]System.Int32.
In short, these two actions are the same to the CLR.