title: string.Format fails at runtime with array of integers
body: <p>Consider <code>string.Format()</code> whose parameters are a string and, among others in the overload list, an <code>object[]</code> or many objects.</p>
  
  <p>This statement succeeds:</p>
  
  <pre><code>string foo = string.Format("{0} {1}", 5, 6);
  </code></pre>
  
  <p>as does this:</p>
  
  <pre><code>object[] myObjs = new object[] {8,9};
  string baz = string.Format("{0} and {1}", myObjs;
  </code></pre>
  
  <p>as does an array of strings:</p>
  
  <pre><code>string[] myStrings = new string[] {"abc", "xyz"};
  string baz = string.Format("{0} {1}", myStrings);
  </code></pre>
  
  <p>It seems that the integers, when specified individually, can be boxed or coerced to type <code>object</code>, which in turn is coerced to a string.</p>
  
  <p>This statement fails at <strong>runtime</strong>.</p>
  
  <pre><code>int[] myInts = new int[] {8,9};
  string bar = string.Format("{0} and {1}", myInts);
  </code></pre>
  
  <blockquote>
    <p>Index (zero based) must be greater than or equal to zero and less than the size of the argument list.</p>
  </blockquote>
  
  <ul>
  <li>Why doesn't or can't the int array be coerced or boxed to an <code>object[]</code> or <code>string[]</code>? </li>
  <li>Out of a small bit of curiosity, why doesn't the compiler catch this?</li>
  </ul>