title: Why doesn't .NET/C# optimize for tail-call recursion?
body: <p>I found <a href="https://stackoverflow.com/questions/340762/which-languages-support-tail-recursion-optimization">this question</a> about which languages optimize tail recursion. Why C# doesn't optimize tail recursion, whenever possible?</p>
  
  <p>For a concrete case, why isn't this method optimized into a loop (<a href="http://en.wikipedia.org/wiki/Microsoft_Visual_Studio#Visual_Studio_2008" rel="noreferrer">Visual&nbsp;Studio&nbsp;2008</a> 32-bit, if that matters)?:</p>
  
  <pre><code>private static void Foo(int i)
  {
      if (i == 1000000)
          return;
  
      if (i % 100 == 0)
          Console.WriteLine(i);
  
      Foo(i+1);
  }
  </code></pre>