How passing in x.ToString() into a method which is expecting an object type as opposed to just x prevent boxing?
<p>I have a method called <code>OutputToScreen(object o)</code> and it is defined as:</p>

<pre><code>public void OutputToScreen(object o)
{
    Console.WriteLine(o.ToString());
}
</code></pre>

<p>In my main calling method, if I do something like:</p>

<pre><code>int x = 42;
OutputToScreen(x); // x will be boxed into an object
</code></pre>

<p>But if I do,</p>

<pre><code>OutputToScreen(x.ToString()); // x is not boxed
</code></pre>

<p>I am still not sure why x is not boxed in the second approach, I just saw it on a free video from quickcert.  Can someone give good explanation?</p>

<p>Here is an additional question based on comments:</p>

<p>If I pass in x.ToString() which is similar to doing:</p>

<p>string temp = x.ToString(); and then passing in temp, doesn't boxing still occur when I box x to a string type</p>
