title: String.Format parameter order annoyance
body: <p>it's really annoying how C# seems to force you to explicitly name the index of every parameter in String.Format, if you want to add another parameter somewhere you either have to re-index the string or put your new parameter at the end. </p>
  
  <p>Is there a way to get C# to do this automatically?</p>
  
  <p>e.g. (I know this is pointless pedants, it's just an example :)</p>
  
  <p>I start with:</p>
  
  <pre><code>String.Format("{0} {1} {1} {2} {3}", a, b, c, d)
  </code></pre>
  
  <p>if I want to add a parameter at the beginning I can do one of the following:</p>
  
  <pre><code>String.Format("{4} {0} {1} {1} {2} {3}", a, b, c, d, e)
  String.Format("{0} {1} {2} {2} {3} {4}", e, a, b, c, d)
  </code></pre>
  
  <p>in Delphi for example I could do the equivalent of this:</p>
  
  <pre><code>String.Format("{} {} {} {2} {} {}", e, a, b, c, d)
  </code></pre>