title: How passing in x.ToString() into a method which is expecting an object type as opposed to just x prevent boxing?
body: <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>